首页 > 解决方案 > 如何将文件从 ADODB.Stream 保存到 SQL Server 中的表?

问题描述

我有一个查询将数据从Image列保存到磁盘:

declare @x varbinary(max)
declare @xz varbinary(max)
declare  @OLEStream Int, @ErrCode   Int
declare @FileName nvarchar(4000) = N'd:\temp1.pdf'

set @x =(SELECT [_Fld3351] FROM [mydb].[dbo].[_InfoRg3349] WHERE<> )



exec @ErrCode = sys.sp_OACreate 'ADODB.Stream' ,@OLEStream OUT

exec @ErrCode = sys.sp_OASetProperty @OLEStream , 'CharSet' ,'utf-8'
exec @ErrCode = sys.sp_OASetProperty @OLEStream ,'Type' , 1
exec @ErrCode = sys.sp_OAMethod @OLEStream ,'Open'
exec @ErrCode = sys.sp_OAMethod @OLEStream ,'Write', null, @x


EXEC @ErrCode = sp_OAMethod @OLEStream,'SaveToFile',null, @FileName,2 
EXEC @ErrCode = sp_OAMethod @OLEStream,'Close' 

现在我想在varbinary(max)列中写入这些数据。
以前从不使用sp_OAMethod命令,那么如何修改代码以将数据写入表?

标签: sql-server

解决方案


作为故障排除的一部分,以下是如何将该文件加载到 varbinary(max) 列中,以便您可以将其与源列进行比较并找出发生了什么。

insert into SomeTable(BlobColumn)
select BulkColumn 
from openrowset(bulk  N'c:\temp\test.pdf', SINGLE_BLOB) b

推荐阅读