我目前有一个 varchar(255) 列,用于存储小图像文件的路径。我想尝试将文件加载到 varbinary(max) 类型的新列中,但不知道如何编写存储过程来执行此操作。像这样的东西
UPDATE MyTable
SET image = "file located in field imagePath"
我知道这是没有意义的,因为我没有 where 子句,但我会在它的地方放什么?
我目前有一个 varchar(255) 列,用于存储小图像文件的路径。我想尝试将文件加载到 varbinary(max) 类型的新列中,但不知道如何编写存储过程来执行此操作。像这样的东西
UPDATE MyTable
SET image = "file located in field imagePath"
我知道这是没有意义的,因为我没有 where 子句,但我会在它的地方放什么?
您可能需要创建一个存储过程来执行此操作。我已经使用了这里列出的 procs,效果很好:
使用 T-SQL 在 SQL Server 中读取和写入文件
我的目的只包括文本,但提到了二进制。
根据您的 SQL Server 版本,您可以尝试openrowset,或者正如@Jeremy Pridemore 所提到的,您可以使用 CLR。
更新
如果您使用的是 SQL2005 或更高版本,此代码可能会对您有所帮助:
declare @MyFile varbinary(max)
select @MyFile = bulkcolumn
from openrowset (bulk 'C:\SomeFolder\SomeImage.jpg', single_blob) myfile
select @MyFile
SQL 不太适合访问文件系统,但在 C#/VB.NET 程序中完成这项任务并不难。
编辑:如果您使用的是 SQL 2005 或更高版本,Tim Lehner 的 OPENROWSET 解决方案是理想的。