【问题标题】:TSQL Extract Database BLOB into temporary tableTSQL 将数据库 BLOB 提取到临时表中
【发布时间】:2019-04-06 21:55:35
【问题描述】:

我们使用封闭的在线记录系统,允许将 CSV 文件作为图像 BLOB 上传到数据库中。系统使用它们来完成各种工作。

我正在尝试找到一种方法来上传 CSV,然后使用 OpenRowset 或类似工具从数据表中访问我自己的报告的相应 BLOB,然后将 CSV 数据导出到临时表中。

我不知道从哪里开始。我试过玩 OpenRowset 但失败了。

如有任何提示,我们将不胜感激。

【问题讨论】:

  • “图像 BLOB”是指已弃用的 IMAGE 类型的列吗?你对此无能为力。如果 CSV 以 Windows-1252 或 Unicode 编码,请尝试将其转换为 VARCHAR(MAX)NVARCHAR(MAX)(分别)。即使这样也只会为您提供文本形式的 CSV 文件。 SQL Server 直到 2017 年才能导入 CSV,即使这样也无法从任何非文件中读取它。您可以使用 OLE 自动化将 blob 保存为文件,但我强烈建议您使用客户端代码解决此问题 (bcp would probably do)。
  • 忘记 T-SQL 来完成这项工作。更好的方法是使用外部程序将 blob 从数据库中提取到外部文件中,解析 csv 文件并插入到表中。
  • 不幸的是,外部程序是不可能的。我必须在应用程序的框架内工作。
  • 是的,IMAGE 类型的列。转换为 VARCHAR(MAX) 可能是一个选项。获得文本后,我可以将其拆分。

标签: sql-server tsql blob


【解决方案1】:

按照 cmets,似乎最简单的方法是先转换为 varbinary,然后将其包装在转换为 varchar(max) 中。

这允许我从 BLOB 中获取文本。

谢谢各位!

Select cast(cast(my_column as varbinary(max)) as varchar(max)) from mytable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多