我目前正在优化一个SSIS包,它在运行时处理大约2000个文件并将其加载到ETL表中。这是一个简单的foreach循环,可以快速加载到netezza表中。显然,它需要相当多的时间,主要是因为每次加载一个文件时,在我们进入下一个文件之前需要执行一些其他审计步骤。我尝试使用nzload
但是它再次没有太大变化,因为文件的实际负载很快,它只是整个循环的1个文件x 2000很多,这导致我我的问题:
有没有一种简单的方法可以将它分成4个流?所有文件都位于1个目录中(它们是txt文件),并且有一个整数结束。例如,命名约定为File1607120001
,而结束数字只会递增(Next将File1607120002
增加到File1607123000
,然后712将更改为713并且它将重置再次到3000)。任何特殊的方式,我可以欺骗foreach分子,并做4个单独的流,从同一目录加载到同一个表?
答案 0 :(得分:1)
您可以尝试修改以下两个选项,看看它是如何工作的。
希望这有帮助。
答案 1 :(得分:0)
从您的问题看,似乎有很多小文件要加载到NZ中,如果将小文件合并到一个大文件中,而不是在每个小文件上运行一个循环运行一次以获得更大的文件,它会更快。
如果您没有使用SSIS进行复杂的ETL过程,那么最好的选择是压缩小文件并将其移动到NZ主机,然后使用shell脚本将小文件合并为一个大文件,并将nzload或awk最后4个字符串文件名并获取模数为4然后将文件放入线程桶中以并行处理。