我有一个在SSIS中构建的进程,它循环遍历Excel文件,并只从包含名称报告的文件中导入数据。
我用作表达式的UserVariable是:*Report*.xlsx,它运行得非常好。现在,我试图构建类似的循环,但只用于文件名中不包含报表的文件。
有点像*<>Report*.xlsx
有可能吗?
谢谢你帮忙!
哑光
发布于 2017-03-06 20:41:51
不幸的是,您不能使用SSIS表达式(类似于*[^...]*.xlsx)来实现这一点,您必须搜索一些解决方案:
解决方案
First
在进入循环和循环之前,使用Execute Script Task获取过滤过的文件列表,然后使用ForEach循环容器(Ado枚举器)
User::FilesList__),它的类型是System.Object (Scope: Package)Execute Script Task,并将User::FilesList添加为ReadWrite变量FilesList变量作为源ScreenShots



第二
在for循环中添加一个Expression Task以检查该文件是否包含Report字符串。
System.Boolean类型的变量(名称: ExcludeFile)



注意:没有必要使用Expression Task来验证这一点,您可以使用虚拟DataFlowTask或脚本任务来检查文件名是否包含要排除的关键字。
发布于 2017-03-06 18:12:39
在循环中,将脚本任务放在第一个任务之前。用一条线连接这两条线。右键单击该行并将约束选项设置为表达式。你的表情会像这样..。
FINDSTRING(@var, "Report", 1) == 0其中@var是可迭代的循环。
只有没有“报告”的文件才会进入下一步。
引用这个确切的答案。SSIS Exclude certain files in Foreach Loop Container
https://stackoverflow.com/questions/42628842
复制相似问题