sql-server - SSIS 使用太多内存将大型 (40GB+) XML 文件加载到 SQL Server 表中

标签 sql-server xml ssis large-files

我需要使用 SSIS 将单个大型 (40GB+) XML 文件加载到 SQL Server 2012 数据库表中。我遇到了问题,因为 SSIS 似乎试图将整个文档加载到内存中而不是流式传输。

这是我的 SSIS 包的更多详细信息。

我创建了一个具有以下属性的 XML 源:

  • 数据访问模式:来自变量的 XML 文件(但可以是 XML 文件位置)
  • 变量名称:指定我的计算机中的 XML 文件路径的变量。
  • XSD 位置:定义正在读取的 XML 的 XSD 路径。

XML 结构很简单,只有 3 个层次结构级别:

  1. 带有 header 信息的根元素
  2. 一级定义对象集合
  3. 定义各个对象的叶级别(每个对象都有一组固定的字段)

我需要为每个叶元素插入一条数据库记录,重复较高层次结构级别的字段。换句话说,我需要展平 XML 层次结构。

如何让 SSIS 流加载数据,而不是尝试将整个文档加载到内存中?

最佳答案

XML 源始终加载整个文件。它使用 XmlDocument 来执行此操作(我上次检查过)。

您唯一能做的就是以某种方式拆分文件,然后通过数据流迭代运行每个部分。

除此之外,您还需要创建自定义数据源,这并非易事。它还代表了一段需要维护的重要代码。

可能有第三方数据源可以执行此操作。大约五年前我不得不自己写一个。

关于sql-server - SSIS 使用太多内存将大型 (40GB+) XML 文件加载到 SQL Server 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551316/

相关文章:

javascript - xml "reusable"代码

java - 在 Eclipse 4.2 中验证 XML 和 XSD - 缺少选项?

sql - ADO.net 源的 SSIS 变量 SQL 命令

sql - 如何在SSIS数据流中的两个源之间获取不匹配的数据?

sql-server - SSRS 2005-捕获RAISERROR消息

sql-server - 获取本周星期一和星期日的日期

sql - Adventureworks 创建脚本?

sql - Order by 子句正在改变我的结果集

python - Odoo v9 列未在相关字段上排序的问题

c# - SSIS 脚本组件不允许文本流输出