读取BLOB列并将其转换为文件中的xml

时间:2018-05-28 03:56:05

标签: sql-server tsql sql-server-2014

我有一个blob列。这是截图:

TBDocuments table with Document Column As BLOB

你可以看到我有一个TBDOCUMENTS表。在此表中,DOCUMENT列为BLOB。我想读这个专栏。然后我知道对于这个特定的DOCUMENTURL这个列包含xml。所以我想把它转换成XML。然后我想把这个XML写在一个文件中。

如何在SQL Server中执行此操作?我正在使用SQL Server 2014

1 个答案:

答案 0 :(得分:0)

要读取存储在blob列中的xml(例如varbinary),您可以使用CONVERT

select CONVERT(xml,(CONVERT(varbinary(max),DOCUMENT))) 
from TBDOCUMENTS
where DOCUMENTURL='...'

现在您可以将此字符串写入XML文件。我认为SQL Server可能不适合这项任务;尽管如此,有很多技术可以实现这一目标,例如使用bcp(更多信息herehere

正如评论中所报告的,使用CONVERT时可能会出现与DTD相关的错误:

  

不允许使用内部子集DTD解析XML。使用带有样式选项2的CONVERT来启用有限的内部子集DTD支持。

在这种情况下,使用CONVERT命令的xml-styles选项(更多信息here)修复了问题:

select CONVERT(xml,(CONVERT(varbinary(max),DOCUMENT)), 2)
from TBDOCUMENTS
where DOCUMENTURL='...'