附加PDF的SQL XML输出

时间:2016-06-17 15:15:54

标签: sql sql-server xml pdf blob

我编写了一个以XML格式导出数据的SQL Server程序。在数据库中,我还有PDF存储为BLOB文件,我需要与数据一起导出。我可以在导出时将这些转换为PDF吗?

1 个答案:

答案 0 :(得分:0)

这真的很容易......

我假设BLOB存在于group.ix[j, 'Price'] = group.ix[j, 'Price'] * (te_index[i] * weights[i])类型的表列中。将此类列添加到VARBINARY(MAX)会隐式为您执行转换。

在这个例子中,我使用了三个很小的二进制BLOB,将它们放入XML变量并重新读取它们。与您的PDF BLOB应该没有区别:

SELECT ... FOR XML PATH

结果为XML(隐式转换为base64)

DECLARE @tbl TABLE(ID INT,Content VARBINARY(MAX));
INSERT INTO @tbl VALUES
 (1,0x101010101010101010101)
,(2,0x110011001100110011001100)
,(3,0x111000111000111000111000);

DECLARE @xml XML=
(
    SELECT ID AS [@ID]
          ,Content
    FROM @tbl
    FOR XML PATH('myData'),ROOT('root')
);

SELECT @xml;

现在我从XML中读取数据

<root>
  <myData ID="1">
    <Content>AQEBAQEBAQEBAQE=</Content>
  </myData>
  <myData ID="2">
    <Content>EQARABEAEQARABEA</Content>
  </myData>
  <myData ID="3">
    <Content>ERAAERAAERAAERAA</Content>
  </myData>
</root>

结果

SELECT B.value('Content[1]','varbinary(max)') AS BackToVarbinary
FROM @xml.nodes('/root/myData') AS A(B)