gpt4 book ai didi

sql - 将 varbinary 数据保存到磁盘的脚本

转载 作者:行者123 更新时间:2023-12-01 19:03:51 29 4
gpt4 key购买 nike

我有一些 varbinary 数据存储在 MS Sql Server 2005 的表中。是否有人有将查询作为输入的 SQL 代码(假设查询保证返回单列 varbinary)并将字节输出到磁盘(每行一个文件?)我确信这个问题之前已经被问过一千次了,但谷歌搜索得出的大多是 .net 解决方案。我想要一个 SQL 解决方案。

最佳答案

BCP 方法对我不起作用。它写入磁盘的字节无法反序列化回我存储的 .net 对象。这意味着磁盘上的字节不等于存储的字节。也许 BCP 正在写入某种 header 。我不知道。

我发现以下代码here在文章的底部。效果很好!尽管它是用于存储 BMP 图像,但它适用于任何 varbinary。

DECLARE @SQLIMG VARCHAR(MAX),
@IMG_PATH VARBINARY(MAX),
@TIMESTAMP VARCHAR(MAX),
@ObjectToken INT

DECLARE IMGPATH CURSOR FAST_FORWARD FOR
SELECT csl_CompanyLogo from mlm_CSCompanySettingsLocalizations

OPEN IMGPATH

FETCH NEXT FROM IMGPATH INTO @IMG_PATH

WHILE @@FETCH_STATUS = 0
BEGIN
SET @TIMESTAMP = 'd:\' + replace(replace(replace(replace(convert(varchar,getdate(),121),'-',''),':',''),'.',''),' ','') + '.bmp'

PRINT @TIMESTAMP
PRINT @SQLIMG

EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken

FETCH NEXT FROM IMGPATH INTO @IMG_PATH
END

CLOSE IMGPATH
DEALLOCATE IMGPATH

关于sql - 将 varbinary 数据保存到磁盘的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056050/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com