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