【问题标题】:Best way to load 2000 files quickest in SSIS在 SSIS 中最快加载 2000 个文件的最佳方法
【发布时间】: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 个单独的流从同一个目录加载到同一个表吗?

【问题讨论】:

    标签: visual-studio ssis netezza flat-file


    【解决方案1】:

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        相关资源
        最近更新 更多