SQL Server将base64数据转换为文件

时间:2015-03-28 05:21:06

标签: sql-server save base64

情景:

  • 我将pdf文件转换为base64并将其放入xml和

问题:

  • 当我收到xml时,我将不得不将此base64数据转换回来 使用SQL Server将原始pdf文件存储到某处。

我    发现this link但无法弄清楚如何做到这一点。
这是    我有什么:

DECLARE 
    @SQLcommand VARCHAR(8000),
    @MyOriginalFile VARCHAR(8000),
    @RawData VARCHAR(8000)

SET @RawData = 'JVBERi0x etc'

SET @SQLcommand = 'bcp "SELECT @MyOriginalFile = @RawData" queryout "\\MY-SERVER\MySharedFolder\New.pdf" -T -n -S A70195\dev'

EXEC xp_cmdshell @SQLcommand
  • 我想我需要了解-T -n -S A70195 \ dev的意思。

    有人可以帮忙吗?
    感谢。

1 个答案:

答案 0 :(得分:0)

从SQL2005开始,我将VARBINARY(MAX)数据类型用于PDF内容,FOR XML ... , BINARY BASE 64将二进制值转换为BASE64

-- VarBinary -> XML
DECLARE @PdfContent VARBINARY(MAX)
SET @PdfContent = 0x12345678

SELECT  @PdfContent AS BinaryContent
FOR XML RAW, BINARY BASE64
-- Output <row BinaryContent="EjRWeA==" />

-- XML -> VarBinary
DECLARE @PdfContentAsXML XML
SET     @PdfContentAsXML = N'<row BinaryContent="EjRWeA==" />'
SELECT  x.XmlCol.value('(@BinaryContent)', 'VARBINARY(MAX)') AS BinaryContentFromXml
FROM    @PdfContentAsXML.nodes('row') x(XmlCol)
-- Output 0x12345678