【问题标题】:Processing Large XML file into SQL Server with C#使用 C# 将大型 XML 文件处理到 SQL Server 中
【发布时间】:2010-11-05 14:02:31
【问题描述】:

首先,我在这里描述的是已经存在的大型 ETL 流程的一小部分。所以,请不要建议移植到 SSIS 或其他环境,因为我不能。

在这个 ETL 过程中,对于正在插入的 SQL server 数据库中的每个表,我是:

  1. 将所有相关的 xml 加载到 XElement 对象中
  2. 然后将 xml 转换为类型化的数据集数据表
  3. 然后使用 SqlBulkCopy 对象快速将数据插入到 sql server 表中。

但是,对于一个表,当我创建 XElement 时,我得到了 OutOfMemory 异常。

所以,我现在需要以块的形式迭代地处理数据,但我不确定执行此操作的最佳方法。 xml 文件存储在运行 ETL 进程的同一台机器上。

感谢您的帮助。

更新

我开始阅读我从未使用过的 XmlReader 类。如果有人认为这是答案,请说出来并提供任何指导。

【问题讨论】:

    标签: c# .net xml database etl


    【解决方案1】:

    不要使用XmlElement - 使用基于 .NET SAX 的解析器来解析 XML 流。永远不要物化内存中的对象。简单的。有一个 API。

    基本上,使用XmlTextReader

    【讨论】:

      【解决方案2】:

      除了简单地使用 XmlReader 之外,了解 XNode.ReadFrom 方法可能很有用。如果 XML 更像是一个很长的实体列表而不是深层嵌套的层次结构,则它的效果特别好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-23
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 2012-09-22
        • 1970-01-01
        相关资源
        最近更新 更多