代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

使用C将大型XML文件处理到SQL Server中#

  •  0
  • Ronnie Overby  · 技术社区  · 14 年前

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

    在此ETL过程中,对于要插入的SQL Server数据库中的每个表,我是:

    1. 将所有相关的XML加载到Xelement对象中
    2. 然后将XML转换为类型化的数据集数据表
    3. 然后使用sqlblkcopy对象将数据快速插入到SQL Server表中。

    但是,对于一个表,当我创建Xelement时,会得到一个OutofMemory异常。

    所以,我现在需要以块的形式迭代处理数据,但我不确定最好的方法来做到这一点。XML文件存储在运行ETL进程的同一台计算机上。

    谢谢你的帮助。

    更新

    我开始阅读关于XMLReader类的内容,我从未使用过它。如果有人认为这是答案,请这样说,并提供任何指导,你会。

    2 回复  |  直到 12 年前
        1
  •  1
  •   marc_s Anurag    14 年前

    不要使用 XmlElement -使用基于.NET SAX的分析器来分析XML流。永远不要把记忆中的事物具体化。简单。这有一个API。

    基本上,使用 XmlTextReader .

        2
  •  0
  •   nayato    12 年前

    除了简单地使用xmlreader之外,了解方法也很有用 XNode.ReadFrom . 如果XML更像是一个非常长的实体列表,而不是深度嵌套的层次结构,那么它的工作就特别好。