【问题标题】:SSIS Exclude certain files in Foreach Loop ContainerSSIS 排除 Foreach 循环容器中的某些文件
【发布时间】:2013-09-30 11:24:25
【问题描述】:

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

目前,容器的FileSpec会查找所有格式如下的文件:

fileName_environment_*

这工作正常。现在正在从同一目录加载第二组文件,为了区分这些文件,文件格式为:

fileName_environment_business_*

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

filename_environment_abc 
filename_environment_def
filename_environment_xyz 
filename_environment_business_abc
filename_environment_business_def 
filename_environment_business_xyz

但第一个包会处理所有文件。

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

fileName_environment_business_*

【问题讨论】:

  • 您必须按照指定的顺序运行它们吗?在我看来,首先运行具有最小/最具体范围的包似乎是最好的做法。但是,如果您依赖其他文件中的数据,这是不可行的。
  • @Nighty_ 软件包不会删除文件——它们只是读取数据。所以,按一定的顺序跑是没有区别的。
  • 啊哈。那么已经读取的文件没有存档吗?这可以通过文件系统任务轻松实现。然后你不必多次阅读同一个文件(除非那是你想要的)并且通过首先运行“商业”包你会得到你想要的。我不知道你被允许/不允许做什么,但这可能是完成它的好方法。
  • @Nighty_,很遗憾我们只能读取文件。

标签: ssis foreach-loop-container


【解决方案1】:

在 foreach 循环容器中,在您已经获得的第一个块之前放置一个虚拟 Script task。用一条线连接这两个并将Constraint Options 设置为表达式,您应该在其中定义一个FINDSTRING 函数:

FINDSTRING(@var, "business", 1) == 0

@var 是循环可迭代的地方。

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

【讨论】:

  • 谢谢,我也考虑过脚本任务,只是想看看有没有其他的想法。在决定方法之前,我将等待看看是否有其他解决方案。
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多