在 SSIS 中最快加载 2000 个文件的最佳方法

Posted

技术标签:

【中文标题】在 SSIS 中最快加载 2000 个文件的最佳方法【英文标题】:Best way to load 2000 files quickest in SSIS 【发布时间】:2016-07-18 18:02:30 【问题描述】:

我目前正在优化一个 SSIS 包,该包在运行时处理大约 2000 个文件并将其加载到 ETL 表中。这是一个简单的 foreach 循环,可以快速加载到 netezza 表中。显然,这需要相当多的时间,主要是因为每次加载一个文件时,在我们可以直接进入下一个文件之前,还需要执行一些其他审计步骤。我尝试使用nzload,但它并没有太大变化,因为文件的实际加载速度很快,只是 1 个文件 x 2000 的整个循环很多,这让我想到了我的问题:

有没有一种简单的方法可以将其分成 4 个流?所有文件都位于 1 个目录中(它们是 txt 文件),并以整数结尾。例如,命名约定是File1607120001,而结束数字只会增加(接下来是File1607120002,直到File1607123000,然后712 将更改为713,它会再次重置为3000)。有什么特殊的方法可以欺骗 foreach 分子并执行 4 个单独的流从同一个目录加载到同一个表吗?

【问题讨论】:

【参考方案1】:

您可以尝试修改以下两个选项,看看它是如何工作的。

    SSIS 控制流和数据流中的并行处理。看一看 在以下链接:Improve ETL Performance with SSIS Parallel Processing 并发处理。请看以下两个链接:Concurrent Processing in SSIS Part 1 和 Part 2。

希望这会有所帮助。

【讨论】:

【参考方案2】:

从您的问题看来,您尝试将许多小文件加载到 NZ,如果您将小文件合并到一个大文件中,而不是在每个小文件上运行一个循环,运行一次以获得更大的文件,它会更快.

如果您不使用 SSIS 进行复杂的 ETL 过程,那么最好的选择是压缩小文件并将其移动到 NZ 主机,然后使用 shell 脚本将小文件合并到一个大文件中并 nzload 或 awk 文件名的最后 4 个字符并获取模 4 然后将文件放入线程桶中以并行处理。

【讨论】:

以上是关于在 SSIS 中最快加载 2000 个文件的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

最佳设计模式——用于 DWH 加载的 SSIS 包

SSIS - 移动并打开 zip 文件/加载 xml 文件到 BD

通过 SSIS 处理 SFTP 或 FTPS 文件的最佳方法 [关闭]

测量 SSIS 数据流的进度

在 JSON 文件中仅加载 2000 个结果中的 500 个,并带有附加加载更多按钮

使用 SSIS 加载最新的 Excel 文件:脚本任务调试