SSIS For Each File Enumerator多个文件过滤器

时间:2009-09-29 18:25:32

标签: sql-server-2008 ssis

在SQL 2008(SSIS)中是否可以在for each循环控件中指定多个文件过滤器?

像HH *。*和U *。*。

之类的东西

那个或很酷的解决方法会很棒。

谢谢,

4 个答案:

答案 0 :(得分:2)

我认为不可能做多种文件类型。我所知道的唯一方法是执行*.*和条件逻辑。

答案 1 :(得分:2)

带有正则表达式支持的foreach循环怎么样? http://microsoft-ssis.blogspot.com/2012/04/custom-ssis-component-foreach-file.html

enter image description here

答案 2 :(得分:0)

可以指定多个文件扩展名。您需要做的就是在Foreach循环编辑器SampleFileSpec *。*的“Files:”部分中指定,并且将检索以SampleFileSpec开头的所有文件,而不管文件类型或其他尾随字符。您还可以在Foreach循环编辑器的FileSpec中创建表达式。

如果需要处理多个已知文件模式,则可以在Foreach循环容器中添加多个数据流,并根据条件语句为数据流设置启用标志。

我可以看到这样做的唯一好处是你只需要使用For Each循环容器迭代文件夹一次。我建议让多个Foreach循环容器使用自己的专用数据流。这样可以在将来更轻松地维护代码。

这可以解决您的问题吗?您试图通过单独的Foreach循环容器更好地处理哪些用例?

答案 3 :(得分:0)

另一种选择是我喜欢称之为“子包装”的东西。在您的情况下,程序包将只包含一个ForEach循环,配置为在包变量中配置的文件规范上循环。包本身将通过Parent Package Configuration接收FileSpec变量的值。

通过这种方式,您可以使用通用软件包来执行您期望的操作,可以从任何其他软件包中调用。要处理具有两个不同过滤器的文件,您需要做的就是调用包两次,每次都使用不同的变量值。

如果您不赞成使用父包配置,可以通过使用调用dtexec.exe的执行进程任务调用包来避免这种情况,同时参数的值通过Arguments属性传递。