【问题标题】:Reading large XML file and inserting data into database读取大型 XML 文件并将数据插入数据库
【发布时间】:2012-06-01 13:11:33
【问题描述】:

我有大的 XML 文件,最大 4 到 5 GB。

我设法用XmlReader 读取它,但现在想将值添加到数据库中

我使用简单的插入查询将值添加到数据库并卡住了,将 2 GB 文件的值插入数据库需要 2 个多小时。是否有其他方法可以更有效地将 XML 文件中的值添加到数据库中?

XML 文件具有新的属性,它们的值也将添加到数据库中。

我使用的是 SQL Server 2008 和 .NET。

谢谢..

【问题讨论】:

  • 您是为所有插入创建一个连接还是为每个插入创建一个连接?
  • 一个连接所有插入..

标签: c# .net sql-server-2008 xml-parsing


【解决方案1】:

【讨论】:

    【解决方案2】:

    这听起来像是“批处理”式操作。考虑采取不同的方法:

    1. 创建一个 xsl 转换,将您的 xml 转换为 BULK INSERT 语句
    2. 将生成的 sql 脚本保存到文件或构建命令字符串
    3. 执行sql脚本

    this MSDN topic

    这种方法几乎肯定会比遍历 XML 并一次插入一行的性能更高。

    【讨论】:

      【解决方案3】:

      您可以互操作 XmlBulkLoad。可能是this可以帮到你吗?

      【讨论】:

        【解决方案4】:

        如果您直接从 SQL Server 读取 XML 文件,您将获得更快的响应。

        这是一个 3 步过程,简化如下:

        1) 声明 @doc xml = '你的 xml 在这里' 声明@handler int

        2) 执行 sp_xml_preparedocument @handler OUTPUT, @doc

        3) select * from OPENXML(@handler, '/ROOT/Path/To/Data')

        【讨论】:

        • 你是在建议他将 2GB 的 xml 粘贴到第 1 行吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-15
        • 2018-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        相关资源
        最近更新 更多