SSIS Foreach 循环 ADO 枚举器

Foreach 循环容器 ADO 枚举器迭代数据库对象。本文档演示了如何配置 SSIS Foreach 循环 ADO 枚举器,以将记录从一个 SQL 数据库传输到另一个数据库,并附有示例。

为了演示这一点,我们在数据库中使用“员工”表。

Employee Table

将“执行 SQL 任务”拖放到 SSIS 控制流区域。接下来,创建变量以保存记录。由于“员工”表有六列(ID 除外),我们创建了六个变量,外加一个 Object 类型变量以存储完整的查询结果集。

Execute SQL Task

双击“执行 SQL 任务”,将“ResultSet”更改为“Full result set”,然后从现有连接中选择连接。接下来,单击浏览按钮以编写 SQL 语句。编写图像中显示的第一个代码,或使用下面的代码。

SELECT * FROM Employee
Execute SQL Task Editor

将 User::ResultSet 变量名称分配给结果集。

Add variable name to the result set

SSIS Foreach 循环 ADO 枚举器示例

将 Foreach 循环容器拖放到控制流区域。

SSIS ForEach Loop ADO Enumerator 6

双击它将打开编辑器。首先,将“Loop Enumerator type”更改为“SSIS Foreach ADO Enumerator”。接下来,选择 User::ResultSet 作为 ADO 对象源变量。

对于其余的迭代器,

  1. ADO.NET 架构行集枚举器
  2. 文件枚举器
  3. 项目枚举器
  4. NodeList 枚举器
  5. SMO 枚举器
  6. 变量枚举器
SSIS ForEach Loop ADO Enumerator Object Variable

选择枚举模式。在此,我们选择了“Rows in the First table”。

Choose Mode for SSIS ForEach Loop ADO Enumerator

在“Variable mappings”选项卡下,选择我们之前创建的变量。请注意,索引顺序必须与表列匹配。

SSIS ForEach Loop ADO Enumerator Variabel Mapping

将“执行 SQL 任务”添加到 Foreach 循环 ADO 枚举器容器中。

Add Execute SQL Task inside the Loop

双击以打开编辑器,然后选择用于存储记录的连接。我们在 SQL 语句中使用 INSERT 语句(通过 SQL 链接)通过参数加载记录。

INSERT INTO [dbo].[ADO Enumerator]
([FirstName],[LastName] ,[Education],[Occupation],[YearlyIncome],[Sales],[HireDate])
VALUES (?, ?, ?, ?, ?, ?, ?)
SQL Insert Statement

转到“Parameter Mapping”选项卡,分配变量名称,并更改数据类型以匹配目标表。

Parameter Mapping

运行 SSIS Foreach 循环 ADO 枚举器包。

Run SSIS ForEach Loop ADO Enumerator package

打开 SQL Server Management Studio 查看输出。

SSIS ForEach Loop ADO Enumerator Output