如何使用变量在foreach循环容器中查找?

时间:2013-08-27 02:24:02

标签: sql ssis

我需要处理文件夹中的所有文件。 像这样的东西:

foreach loop over n

fileprocess.exe -argument_n filename_n

每个参数都是特定于文件的,将从表中检索。 需要设计ssis包来批量处理文件。 foreach循环看起来很完美。

我正在考虑使用lookup transform来检索相应的参数。 我的问题是

  • 如何将变量@[user::filename]提供给查找转换?
  • 如何将查询输出分配到@[user::argument]
  • 想知道查找转换是否正确使用?

非常感谢!

1 个答案:

答案 0 :(得分:1)

假设您有一个包含文件名和相应参数列的表,实现您的要求的一种方法如下:

  1. 将下图中的组件添加到控制流程中。
  2. 在Foreach循环中,Enumerator设置为Foreach File Enumerator。这些文件是从文件夹中读取的,但您可以使用任何类型的枚举器。
  3. 在Loop的范围内创建2个变量以保存文件名和参数,例如 fname farg 。在Foreach循环编辑器的“集合”选项卡中,将索引0分配给变量 fname
  4. 在“执行SQL”任务中,编写查询以检索给定文件名的参数。将变量 fname 指定为输入参数,将“结果集”设置为“单行”,并将结果分配给变量 farg
  5. 在执行流程任务中,将变量 fname farg 作为可执行文件的参数传递。 Control Flow Task