【发布时间】:2018-01-15 09:27:03
【问题描述】:
昨天我能够弄清楚如何使用以下查询来消除重复的结果(如有必要,请参阅 SQL Query to delete duplicate values in a 3 tables inner join with two different databases 了解更多信息):
SELECT
"AM-Martin".dbo.CpCore_Site.Number,"AM-Martin".dbo.CpCore_Site.Latitude,"AM-Martin".dbo.CpCore_Site.Longitude,"AM-Martin".dbo.CpSm_Face.RetiredOn,**CAST("AM-Martin_bin".dbo.CpCore_Image.Bytes as Varbinary)**, "AM-Martin".dbo.CpCore_Site.Name, "AM-Martin".dbo.CpCore_Site.Zipcode
FROM
"AM-Martin".dbo.CpCore_Site
INNER JOIN "AM-Martin".dbo.CpSm_Face on "AM-Martin".dbo.CpSm_Face.SiteId = "AM-Martin".dbo.CpCore_Site.Oid
INNER JOIN "AM-Martin_bin".dbo.CpCore_Image on "AM-Martin".dbo.CpSm_Face.Oid = "AM-Martin_bin".dbo.CpCore_Image.OwnerId
WHERE
"AM-Martin".dbo.CpSm_Face.RetiredOn LIKE '%9999%'
AND "AM-Martin".dbo.CpCore_Site.Number LIKE N'%LA%' OR "AM-Martin".dbo.CpCore_Site.Number LIKE N'%LC%' OR "AM-Martin".dbo.CpCore_Site.Number LIKE N'%BH%'
AND "AM-Martin".dbo.CpCore_Site.Latitude > 0.0
GROUP BY "AM-Martin".dbo.CpCore_Site.Number,"AM-Martin".dbo.CpCore_Site.Latitude,"AM-Martin".dbo.CpCore_Site.Longitude,"AM-Martin".dbo.CpSm_Face.RetiredOn,**CAST("AM-Martin_bin".dbo.CpCore_Image.Bytes as Varbinary)**, "AM-Martin".dbo.CpCore_Site.Name, "AM-Martin".dbo.CpCore_Site.Zipcode;
这个查询允许我在图片列上使用Group By。之后,我将数据放入 SQL 语句中,并将它们导入我的 Postgres SQL DB。当我单击图像值时,我无法打开它,我在程序 (RazorSQL) 中收到的消息是:
无法显示图片
我还直接检查了运行查询的 SQL 数据库表,但无法打开图像。我怀疑它与这条线有关:
**CAST("AM-Martin_bin".dbo.CpCore_Image.Bytes as Varbinary)**
现在的问题是图像值被编码,当我像下面的 SQL 语句一样传输它们时,我不知道如何解码它们:
CREATE TABLE "map" (
number varchar(32) NOT NULL,
latitude float NOT NULL,
longitude float NOT NULL,
retiredon timestamp NOT NULL,
image bytea NOT NULL,
name varchar(256) NOT NULL,
zipcode varchar(11) NOT NULL
);
INSERT INTO map("number", "latitude", "longitude", "retiredon", "image", "name", "zipcode") VALUES ('BH-0001', 34.059858, -118.376056, '9999-12-31 00:00:00.0', decode('FFD8FFE000104A46494600010100000100010000FFDB0043000604050605','hex'), 'NB La Cienega Blvd FS Olympic Blvd NEC', '90035');
我想在我的网站上呈现图像,但它们似乎已编码。当我在 SQL 语句中将它们从 SQL 服务器带到 postgresql 时,如何解码它们?
更新
我尝试在没有图像列的情况下在我的 rails 项目中渲染图像,一切正常。一旦我尝试渲染图像数据,我就会收到以下错误消息:
编码::UndefinedConversionError
【问题讨论】:
-
嗨!您是否考虑过构建一个简单的应用来执行此操作?
-
@ignacio 你能详细说明一下吗?这是我正在处理的一个更大项目的一部分,我现在正在处理后端。
-
当然是杰梅因!我认为构建一个应用程序(如果你愿意,我可以在 C# 中发布一个示例)以从 MSSQL 下载图像然后将它们插入 PostgreSQL 将是一个不错的选择。
-
我更新了我的问题,我认为我不太清楚,请检查一下现在是否有意义。
-
让我看看我是否理解这个问题... 有没有可能是图像没有从一个数据库复制到另一个数据库,或者您确定问题出在 Rails 中?我没有使用 Rails 的经验,但我正在考虑进行查询以将图像检索到应用程序,然后让连接器 (Npgsql) 将它们插入 Postgresql。
标签: ruby-on-rails sql-server database postgresql gmaps4rails