SSIS教程:创建简单的ETL包 -- 2. 添加循环(Adding Looping)

第 1 课:创建项目和基本包中,创建了从单个平面文件源中提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW2012 示例数据库的 FactCurrency 事实数据表中。

但是,提取、转换和加载 (ETL) 过程很少使用单个平面文件。 典型的 ETL 过程从多个平面文件源提取数据。 从多个源提取数据需要采用迭代控制流。Microsoft Integration Services 最可能出现的功能之一是可以方便快捷地向包中添加迭代或循环。

Integration Services 为循环遍历包提供了两种容器类型:Foreach 循环容器和 For 循环容器。 Foreach 循环容器使用枚举器执行循环,而 For 循环容器则通常使用变量表达式。 本课使用 Foreach 循环容器。

Foreach 循环容器使包能够对指定枚举器的每个成员重复执行控制流。 使用 Foreach 循环容器,可以枚举:

  • ADO 记录集行

  • ADO .Net 架构信息

  • 文件和目录结构

  • 系统、包和用户变量

  • 在变量中包含的可枚举对象

  • 集合中的项

  • XML Path 语言 (XPath) 表达式中的节点

  • SQL Server 管理对象 (SMO)

在本课中,将修改在第 1 课中创建的简单 ETL 包,以便利用 Foreach 循环容器。 还将设置用户定义的包变量,以便使该教程包能够迭代遍历文件夹中的所有平面文件。 

在本课中,将不修改数据流,而只修改控制流。

Step 1:添加和配置Foreach循环容器

  1. 选中Control Folw,在SSIS Toolbox => Containers => Foreach Loop Container拖拽到Control Folw

  2. 双击Foreach Loop Container进行编辑

    General:Name更改为Foreach File in Folder。

    Collection:Enumerator选择Foreach File Enumerator;Folder选择课程1中下载的文件夹;Files,输入Currency_*.txt,查找所有Currency_开头的txt文件。

  3. 将枚举映射为用户变量,按下图所示创建变量varFileName

  

  

  

Step 2:修改平面文件连接管理器

  1. 在Connectoin Managers中选中Sample Flat File Source Data,点击右键属性

  2. 在Expressions中,点击...,在Property中选择ConnectionString,Expression中将User::varFileName拖到Expression中。

  

Step 3:测试ETL包

  1. 点击Debug => Starting Debugging开始运行包

  

原文地址:https://www.cnblogs.com/Niko12230/p/5730766.html