SSIS ForEach 变量枚举器

SSIS Foreach 变量枚举器枚举变量中的数据。使用此枚举器循环遍历对象变量以从该对象获取数据。例如,迭代来自数组和 ArrayList 的数据。本文将通过示例介绍如何使用 SSIS Foreach 变量枚举器迭代 ArrayList 并将数据保存到 SQL Server 表中。

让我们创建一个空表来存储 ArrayList 中的数据。

-- ForEach Variable Enumerator in SSIS
USE [SQL Tutorial]
GO

CREATE TABLE [dbo].[ForEach Variable](
 [Wid] [int] IDENTITY(1,1) NOT NULL,
 [Day] [varchar](50) NULL
) 
GO

您也可以查看表中的数据。

SSIS ForEach Variable Enumerator 1

SSIS Foreach 变量枚举器示例

在此 SSIS ForEach 变量枚举器示例中,我们将枚举 ArrayList 并将列表项复制到数据库表中。

为此,首先,将 Script Task 从 SSIS 工具箱拖放到 Control Flow 区域,如下所示

SSIS ForEach Variable Enumerator 2

在开始配置 Script Task 之前,让我们创建一个 Object 类型的变量,并在脚本中使用它来存储 ArrayList 项目。

SSIS ForEach Variable Enumerator 3

双击 Script Task 将打开以下编辑器来配置 Script task 组件。在这里,我们选择之前创建的变量作为 Read 和 Write 变量。

接下来,请点击“Edit Script..” 按钮编写实际的 C# 或 VB Script

SSIS ForEach Variable Enumerator 4

在这里,我们声明了一个 ArrayList 并添加了星期名称。最后,我们将该 ArrayList 赋值给 DayName 变量(Object 类型)。

我们在下面截图中使用的是 C# 代码:

// ForEach Variable Enumerator in SSIS Example
ArrayList arr = new ArrayList();
          arr.Add("Sunday");
          arr.Add("Monday");
          arr.Add("Tuesday");
          arr.Add("Wednesday");
          arr.Add("Thusday");
          arr.Add("Friday");
          arr.Add("Saturday");

Dts.Variables["User::DayName"].Value = arr;
SSIS ForEach Variable Enumerator 5

现在,将 Foreach Loop Container 拖放到 SSIS Control Flow 区域

SSIS ForEach Variable Enumerator 6

双击它将打开 Foreach Loop Editor 进行配置。在 General 选项卡中,请指定有效且有意义的名称和描述。

请转到 Collections 选项卡选择 Enumerator。这里,我们选择 Foreach From Variable Enumerator,因为我们想循环遍历变量。

剩余迭代次数为

SSIS ForEach Variable Enumerator 7

从下面的截图中,我们正在选择 DayName 变量。

SSIS ForEach Variable Enumerator 8

接下来,我们将返回值赋给字符串变量 (Day)。如果我们的对象变量包含许多列值,这将非常有用。

SSIS ForEach Variable Enumerator 9

接下来,将 Execute SQL Task 从工具箱拖放到 Foreach loop container。此 SSIS Foreach Variable Enumerator 任务可帮助我们将值插入我们的空表中。

SSIS ForEach Variable Enumerator 10

双击它将打开 Execute SQL Task Editor 窗口。在这里,我们选择 OLE DB 作为 Connection 类型,并选择了指向数据库的现有连接。

提示:请参阅 OLE DB Connection Manager 文章,了解如何创建新的 OLE DB Connection。

SSIS ForEach Variable Enumerator 11

接下来,我们为 SSIS Foreach Variable Enumerator 编写以下查询。

INSERT INTO [dbo].[ForEach Variable]
           ([Day])
 VALUES (?)

这里,问号将被参数值替换。

SSIS ForEach Variable Enumerator 12

转到 parameter mapping 并选择在 SSIS Foreach Loop enumerator 中分配的参数。

SSIS ForEach Variable Enumerator 13

单击 OK 完成 SSIS Foreach Variable Enumerator 包的配置。让我们运行该包。

SSIS ForEach Variable Enumerator 14

让我们打开 SQL Server management studio,看看我们是否使用 SSIS Foreach Variable Enumerator 插入了 ArrayList 项目。

SSIS ForEach Variable Enumerator 15