Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis SSI排除Foreach循环容器中的某些文件_Ssis_Foreach Loop Container - Fatal编程技术网

Ssis SSI排除Foreach循环容器中的某些文件

Ssis SSI排除Foreach循环容器中的某些文件,ssis,foreach-loop-container,Ssis,Foreach Loop Container,我有一个SSIS包,它从特定目录加载csv文件,使用表达式和通配符拾取所有文件 当前,容器的FileSpec查找具有以下格式的所有文件: 文件名\u环境_* 这很好用。第二组文件现在从同一目录加载,为了区分这些文件,文件格式为: 文件名\u环境\u业务_* 因此,第二个SSIS包只拾取新文件,因为文件的结构如下所示: filename_environment_abc filename_environment_def filename_environment_xyz filename_envi

我有一个SSIS包,它从特定目录加载csv文件,使用表达式和通配符拾取所有文件

当前,容器的
FileSpec
查找具有以下格式的所有文件:

文件名\u环境_*

这很好用。第二组文件现在从同一目录加载,为了区分这些文件,文件格式为:

文件名\u环境\u业务_*

因此,第二个SSIS包只拾取新文件,因为文件的结构如下所示:

filename_environment_abc 
filename_environment_def
filename_environment_xyz 
filename_environment_business_abc
filename_environment_business_def 
filename_environment_business_xyz
但是第一个包将处理所有文件

因此,问题是,我是否可以将第一个SSIS包的
FileSpec
设置为忽略以下格式的文件:

文件名\u环境\u业务_*


在foreach循环容器中,在已经得到的第一个块之前放置一个虚拟的
脚本任务。用一行连接这两个选项,并将
约束选项设置为expression,您应该在其中定义
FINDSTRING
函数:

FINDSTRING(@var, "business", 1) == 0
其中@var是循环iterable


只有内部没有“业务”的文件才能进入下一步。希望这是您想要的。

您必须按照指定的顺序运行它们吗?在我看来,首先以最小/最具体的范围运行包似乎是最好的做法。但是,如果您依赖其他文件中的数据,这是不可行的。@Nighty\u这些包不会删除这些文件,它们只是读取数据。所以,按照一定的顺序运行不会有什么区别。所以对已读取的文件没有存档?这可以通过文件系统任务轻松实现。然后,您不必多次读取同一文件(除非这是您想要的ofc),通过首先运行“业务”包,您将得到您想要的。我不知道你被允许/不被允许做什么,但这是一个很好的方法。@Nighty,我们只能很不幸地读取文件。谢谢,我也考虑过脚本任务,但只是想看看是否有其他想法。在决定方法之前,我将等待看是否有其他解决方案。