【问题标题】:Shred complex XML data into many tables in SQL?在 SQL 中将复杂的 XML 数据分解成许多表?
【发布时间】:2009-08-25 13:08:28
【问题描述】:

我有一个相当复杂的 XML 文档,我想在 SQL Server 2005 中将其扁平化为表。我不想手动编写每个字段和表映射的代码。数据将进入数据仓库的暂存区域,因此表的结构并不重要。

到目前为止,我已经考虑过,并拒绝了以下...

OpenXML - 似乎我可以使用这个将 xml 读入 sql 中的内存,但随后必须编写大量 sql 来执行所有插入。不用了。

XML 批量加载 - 看起来不错,但我觉得我应该编写一个详细说明所有关系的 XSD。当它们隐含在 xml 的层次结构中时,不明白为什么我必须这样做。

SqlBulkCopy - 看起来我仍然需要编写所有映射的东西。

拒绝了所有这些,我正在考虑用 C# 自己动手,这个想法似乎很简单。将数据读入 xmlReader,然后遍历树并生成插入。我可以有一个单独的操作,它只在开发时运行以生成架构。

对此有什么想法吗?

【问题讨论】:

    标签: xml sql-server-2005


    【解决方案1】:

    在 SQL 2005 中使用新的 XML 支持。它比早期版本中的 OPENXML 好得多。你不需要 xsd 的东西。

    在某些时候,您需要映射。 XML 可能是自我描述的,但数据库表不是......

    Example question (well my answer)

    【讨论】:

      【解决方案2】:

      在这种情况下,最终的答案变得更加简单......

      通过查看需求的细节,我们发现即使数据是高度结构化的,我们需要的部分也可以用一个表来表示。因此,我可以对 xml 运行 xslt 转换,以给我一组直接进入表的行和列。在这种情况下通过 SSIS。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-11
        • 1970-01-01
        相关资源
        最近更新 更多