在此任务中,你将添加循环访问平面文件文件夹的功能,并将第 1 课中使用的相同数据流转换应用于每个平面文件。 实现方法是将 Foreach 循环容器添加到控制流中并进行配置。
所添加的 Foreach 循环容器必须能够连接到该文件夹中的每个平面文件。 由于该文件夹中的所有文件都具有相同的格式,因此,Foreach 循环容器可以使用同一平面文件连接管理器来连接其中的每个文件。 容器将使用的平面文件连接管理器与第 1 课中创建的平面文件连接管理器相同。
目前,第 1 课中的平面文件连接管理器仅连接到一个特定的平面文件。 若要迭代连接到文件夹中的每个平面文件,必须配置 Foreach 循环容器和平面文件连接管理器,如下所示:
Foreach 循环容器: 将容器的枚举值映射到用户定义的包变量。 然后,容器将使用此用户定义的变量动态修改
ConnectionString平面文件连接管理器的属性,并迭代连接到文件夹中的每个平面文件。平面文件连接管理器: 你将使用用户定义的变量修改第 1 课中创建的连接管理器,以填充连接管理器
ConnectionString的属性。
此任务中的过程演示如何创建和修改 Foreach 循环容器,以使用用户定义的包变量并将数据流任务添加到循环。 你将了解如何修改平面文件连接管理器,以在下一个任务中使用用户定义的变量。
对包进行这些修改后,运行包时,Foreach 循环容器将循环访问 Sample Data 文件夹中的文件集合。 每次找到与条件匹配的文件时,Foreach 循环容器都会使用文件名填充用户定义的变量,将用户定义的变量映射到 ConnectionString 示例货币数据平面文件连接管理器的属性,然后针对该文件运行数据流。 因此,在 Foreach 循环的每个迭代中,数据流任务将使用不同的平面文件。
注释
由于 MicrosoftIntegration Services 将控制流与数据流分开,因此添加到控制流的任何循环都不需要修改数据流。 因此,不必更改在第 1 课中创建的数据流。
添加 Foreach 循环容器
在 SQL Server Data Tools 中,单击“ 控制流 ”选项卡。
在“SSIS 工具箱” 中,展开“容器” ,然后将“Foreach 循环容器” 拖到“控制流” 选项卡的设计图面上。
右键单击新添加的 Foreach 循环容器 ,然后选择“ 编辑”。
在 Foreach 循环编辑器 对话框中的 “常规 ”页上,对于 “名称”,请输入
Foreach File in Folder。 单击 “确定” 。右键单击 Foreach 循环容器,单击“属性”,然后在“属性”窗口中,验证属性
LocaleID是否已设置为英语(美国)。
为 Foreach 循环容器配置枚举器
双击文件夹中的 Foreach 文件以重新打开 Foreach 循环编辑器。
单击 集合。
在“集合” 页上,选择“Foreach 文件枚举器” 。
在 枚举器配置 组中,单击“ 浏览”。
在“ 浏览文件夹 ”对话框中,找到计算机上包含Currency_*.txt 文件的文件夹。
此示例数据包含在 SSIS 课程包中。 若要下载示例数据和课程包,请执行以下作。
单击“ 下载 ”选项卡。
单击超链接“https://msftisprodsamples.codeplex.com/downloads/get/578097"SQL2012.Integration_Services.Create_Simple_ETL_Tutorial.Sample.zip 文件”。
在 “文件 ”框中,键入 Currency_*.txt。
将枚举器映射到用户定义的变量
单击 “变量映射”。
在 “变量映射 ”页上的“ 变量 ”列中,单击空单元格并选择“ <新建变量...”>。
在“ 添加变量 ”对话框中,对于 “名称”,请键入
varFileName。重要
变量名称区分大小写。
单击 “确定” 。
再次单击 “确定 ”退出 Foreach 循环编辑器 对话框。
将数据流任务添加到循环
- 将 提取示例货币数据流 任务拖到 Foreach 循环容器上,现在已重命名
Foreach File in Folder。