在 SSIS 中处理平面文件的时候会经常用到 Foreach Loop Container. 先介绍一下 Foreach Loop Container 这个组件:
从 Toolbox 中选择 Foreach Loop Container 拖动到 Control Flow 中. 可以看到 Collection 选项中的 Enumerator 中有很多项. 关于这些的说明:
枚举器 | 配置要求 |
---|---|
Foreach ADO | 指定 ADO 对象源变量和枚举器模式。 |
Foreach ADO.NET 架构行集 | 指定与数据库的连接和要枚举的架构。 |
Foreach 文件 | 指定要枚举的文件夹和文件、检索到的文件的文件名格式,以及是否要遍历子文件夹。 |
Foreach 源变量 | 指定包含要枚举的对象的变量。 |
Foreach 项 | 定义 Foreach 项集合中的项,包括列和列数据类型。 |
Foreach Nodelist | 指定 XML 文档的源并配置 XPath 操作。 |
Foreach SMO | 指定与数据库的连接以及要枚举的 SMO 对象。 |
今天我们只是说明对于平面文件的枚举, 所以在这里应该选择 Foreach File Enumerator.
示例如下:
- 首先做一个 Data Flow Task. 从 Flact File Source 转换数据, 清洗后装载到 OLE DB Destination. 这里不再熬述大家可以直接看Package 示例
- 将 Data Flow Task 拖入 Foreach Loop Container
怎样对 Foreach Loop Container 进行设置, 从而能够遍历操作文件夹下的Flat File. 具体操作如下:
- 按照下面的图示进行设置:
- 选择Collection 选项, 在 Enumertor 属性中选择 Foreach File Enumerator
- Folder 属性中选择定位的文件夹. 这里为 F:\SourceFiles
- Files 属性中填写需要遍历文件的文件名. 这里为 Daily Unique Visitors Report for hotels.com*.csv
- 在Retireve file name属性中选择 Fully qualified
- 增加变量@[User::strFile]作为每次传递给 Flat File Source 处理. 变量类型为 String. 如下图所示:
在完成以上操作后我们还需要对 Flat File Source 属性中的 Expressions 进行设置,保证每次变量都能够传递给它. 具体的设置请按下图操作:
这样就完成了整个包。选择运行, 运行结果OK.
怎样对 Foreach Loop Container 进行灵活的设置,不需要每次都去修改 Folder 和 Files 属性, 请听下回分解.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14321372/viewspace-571426/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14321372/viewspace-571426/