【问题标题】:Read BLOB column and convert it to xml in a file读取 BLOB 列并将其转换为文件中的 xml
【发布时间】:2018-05-29 15:59:04
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    如 cmets 中所述,使用 CONVERT 时可能会出现与 DTD 相关的错误:

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

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

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

    【讨论】:

    • 谢谢。运行查询后,我得到了这个错误Parsing XML with internal subset DTDs not allowed. Use CONVERT with style option 2 to enable limited internal subset DTD support. 所以我使用了select CONVERT(xml,(CONVERT(varbinary(max),DOCUMENT)), 2) 并且它起作用了。非常感谢:)
    • @Basit 感谢您的评论:我编辑了我的答案,包括您在未来帮助其他用户的考虑
    猜你喜欢
    • 2019-07-08
    • 2014-09-16
    • 1970-01-01
    • 2015-04-21
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多