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

时间:2016-07-18 18:02:30

标签: visual-studio ssis netezza flat-file

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

从您的问题看,似乎有很多小文件要加载到NZ中,如果将小文件合并到一个大文件中,而不是在每个小文件上运行一个循环运行一次以获得更大的文件,它会更快。

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

相关问题