SSIS 可以从中提取数据的最大 XML 文件是什么?

Chr*_*van 5 xml ssis

我们有一个架构,我们使用 SSIS 将数据从 XML 批处理文件中提取到暂存数据库中进行验证,然后再将其导出到生产环境中。

我们在某种程度上控制了 XML 格式,我被要求确定 XML 批处理文件应包含的最大记录数。基于 XML 模式和一些示例数据,我可以估计平均记录大小并据此进行一些预测。

但是,从另一个角度来看,我想了解 SSIS 在处理大型 XML 文件时的技术限制。

我知道 SSIS 会将 XML 文档展平并将其转换为它自己的表格内存表示形式,因此 RAM 成为一个明显的限制因素,但比例是多少?

你能说,在可用内存中,SSIS 至少需要你试图加载的文件大小的 2.5 倍吗?假设我有一个 32GB 的盒子专用于这个数据加载功能,我的 XML 文件可以有多大?

我知道可能还包括其他因素,例如架构的复杂性、嵌套元素的数量等,但最好有一个起点。

Mic*_*tin 5

Xml Source 不会将整个文档加载到内存中,而是在从 XML 文件读取数据时将数据流式传输出去。因此,如果您读取 XML 并将其写入文本文件等而不进行复杂的转换,则需要相对较少的内存。此外,当 XML 文件增长时,您需要的内存量(在某个阈值之后)会停止增长 - 因此您可以处理潜在的无限 XML 文件。

例如,这个人导出了整个维基百科内容(20Gb XML 文件): http://www.ideaexcursion.com/2009/01/26/import-wikipedia-articles-into-sql-server-with-ssis/

当然,您可能会对该数据执行某些操作,例如加入来自 XML 源的多个流。根据您的需要,您可能需要大量内存,因为某些转换确实将整个数据集保留在内存中,或者如果您有足够的内存用于整个数据集,则性能会更好。