我正在尝试将二进制文件上传到 SQL Server的 varbinary 字段中。我想出了这个查询来做到这一点:
INSERT INTO Files(File, Name)
SELECT
"file.bin" AS Name
* FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
GO
但我收到此错误:
不允许从数据类型 varchar 到 varbinary(max) 的隐式转换。使用 CONVERT 函数运行此查询。
如果我理解正确,它会将文件作为文本(varchar)读取,而它是二进制文件,应该作为二进制文件存储在 varbinary 上。恐怕它会在这个过程中破坏它,是吗?即使没有,我该如何使用 CONVERT 方法?
将数据以与字段相同的顺序放置使其工作(或至少看起来工作):
我自己从来没有这样做过,但我发现这个页面 显示了将 jpg 插入 varbinaries 的相同过程......唯一的区别是路径名之前的 N 并且没有 AS 开关
希望这会有所帮助,但我可能错过了与转换有关的东西
我不确定为什么会返回一个 varchar 列。看起来与msdn中的示例相同。
我不知道您甚至会如何转换该列。也许...
但是,当您指定 SINGLE_BLOB 时,我会更担心它是 varchar。