Sql server SSIS Foreach通过名为“crosswlk”的文本文件循环
在我的Foreach循环中,我只想处理文件名中有crosswlk的文件。不幸的是,这是在文件名的中间,我不能做横跨。PGP。< /P> 我在谷歌上搜索了很多,大多数解决方案都说在脚本任务中使用C来完成这项任务。看起来我应该可以在Foreach容器中完成这项工作,可能是在带有表达式的集合区域中。但是我在属性表达式编辑器中查找有关各种属性的任何信息时遇到困难。名称、FileSpec和FileNameRetrieval属性之间有什么区别 我想我可以做一些类似的事情:Sql server SSIS Foreach通过名为“crosswlk”的文本文件循环,sql-server,ssis,ssis-2014,Sql Server,Ssis,Ssis 2014,在我的Foreach循环中,我只想处理文件名中有crosswlk的文件。不幸的是,这是在文件名的中间,我不能做横跨。PGP。< /P> 我在谷歌上搜索了很多,大多数解决方案都说在脚本任务中使用C来完成这项任务。看起来我应该可以在Foreach容器中完成这项工作,可能是在带有表达式的集合区域中。但是我在属性表达式编辑器中查找有关各种属性的任何信息时遇到困难。名称、FileSpec和FileNameRetrieval属性之间有什么区别 我想我可以做一些类似的事情: Property: Name Ex
Property: Name
Expression: `FINDSTRING(@[User::SourceFilename],"crosswlk",1) > 0`
对我来说,这意味着只处理文件名中有crosswlk的文件。但这不起作用。我注意到crosswlk这个词总是从文件名中的第13个字符开始,所以我尝试使用substring,但也没有成功
有没有一种方法可以这样或那样过滤文件名,或者使用C是唯一的方法?非常感谢 根据文档,您应该能够在文件字段中使用通配符 使用通配符*指定要包含在 收集例如,要包括名称包含 “abc”,使用以下过滤器:*abc* 所以,您应该能够使用如下内容:*crosswlk*
有关更多详细信息,请参见此处:如果很难创建一个可用的通配符,那么一个可能有用的选项是使用FOREACH ADO枚举器。首先,用所需的所有文件名填充记录集对象变量,然后可以循环执行此操作。 您可以通过脚本任务填充记录集对象,并使用C system.IO查询文件系统。
如果您需要严格控制要处理的文件,例如防止加载测试文件,这是一种方便的方法我不认为这会起作用,因为在windows资源管理器中无法做到这一点。非常感谢!!