代码之家  ›  专栏  ›  技术社区  ›  Dayton Brown

每个文件枚举器的SSIS多个文件筛选器

  •  2
  • Dayton Brown  · 技术社区  · 15 年前

    在SQL 2008(SSIS)中,是否可以在for each loop控件中指定多个文件筛选器?

    比如hh*.*和u*.*。

    或者是一个很酷的工作环境会很好。

    谢谢,

    4 回复  |  直到 12 年前
        1
  •  2
  •   Raj More    15 年前

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

        2
  •  2
  •   Joost    12 年前
        3
  •  0
  •   Registered User    15 年前

    可以指定多个文件扩展名。您只需在foreach循环编辑器samplefilespec*.*的“files:”部分中指定,该部分将检索以samplefilespec开头的所有文件,而不管文件类型或其他尾随字符如何。还可以在foreach循环编辑器的filespec中创建表达式。

    如果需要处理多个已知文件架构,那么可以在foreach循环容器中添加多个数据流,并基于条件语句为数据流设置启用标志。

    这样做的唯一好处是,您只需使用for each循环容器迭代一次文件夹。我建议使用多个具有自己专用数据流的foreach循环容器。这将使以后维护代码更加容易。

    这能解决你的问题吗?您试图解决的是什么用例,单独的foreach循环容器无法更好地处理这些用例?

        4
  •  0
  •   Valentino Vranken    13 年前

    另一种选择是我更喜欢称之为“分装”。在您的情况下,包将只包含一个foreach循环,配置为像在包变量中配置的那样循环filespec。包本身将通过以下方式接收filespec变量的值: Parent Package Configuration .

    这样,您就有了一个通用包,它可以执行您期望它执行的操作,并且可以从任何其他包调用。要使用两个不同的过滤器处理文件,只需调用包两次,每次调用的变量值都不同。

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