首页 > 解决方案 > 将从 Web url 检索到的图像作为 varbinary 列插入 SQL Server 数据库

问题描述

我有一个需要存储在 SQL Server 数据库中的图像 url 链接。我需要在 SQL Server 或 SSIS 中编写一些东西来从 URL 中获取该图像。

此处显示的代码的问题是响应文本是nvarchar(max)并且应该是VarBinary(MAX)

这只是从数据库调用http请求的想法。我认为解决方案是在 SSIS 的脚本组件中执行此操作,我是正确的还是有人有更好的主意?

DECLARE @status int
DECLARE @responseText AS TABLE (responseText nvarchar(max))
DECLARE @res AS Int;
DECLARE @url AS nvarchar(1000) = 'https://agriapp.azurewebsites.net/barcode/qr?id=LL-12345'

EXEC sp_OACreate 'MSXML2.ServerXMLHTTP', @res OUT
EXEC sp_OAMethod @res, 'open', NULL, 'GET',@url,'false'
EXEC sp_OAMethod @res, 'send'
EXEC sp_OAGetProperty @res, 'status', @status OUT

INSERT INTO @ResponseText (ResponseText) 
    EXEC sp_OAGetProperty @res, 'responseText'

EXEC sp_OADestroy @res

SELECT 
    @status, 
    CONVERT(VARBINARY(MAX),responseText) responseText 
FROM @responseText

标签: sql-servertsqlvarbinary

解决方案


我相信您在 responseText 中得到的是 base64 编码,您需要对其进行解码,或者将其从 base64 转换为 varbinary。看看这篇博文:

T-SQL:简单的 Base64 编码和解码

https://medium.com/falafel-software/t-sql-easy-base64-encoding-and-decoding-872ad184bd7e


推荐阅读