如何使用varchar列中存储的路径更新varbinary(max)列?

时间:2012-03-29 19:07:25

标签: sql sql-server stored-procedures varbinarymax

我目前有一个varchar(255)列,用于存储小图像文件的路径。我想尝试将文件加载到varbinary(max)类型的新列中,但不知道如何编写存储过程来执行此操作。像这样的东西

UPDATE MyTable
SET image = "file located in field imagePath"

我知道这没有意义,因为我没有where子句,但是我会把它放在哪里?

2 个答案:

答案 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或更高版本。