SSIS Foreach NodeList 枚举器

SSIS Foreach NodeList 枚举器对于枚举 XML 节点非常有用。例如,您可以使用此枚举器遍历 XML 文件中的任何节点。在本文中,我们将通过一个示例向您展示如何使用此 SSIS Foreach NodeList 枚举器。

在开始演示 SSIS 中的 Foreach NodeList 枚举器之前,我将向您展示我们将用于此示例的数据。它是我们将用于此示例的 Employee 表。

Source Table

下面的查询会将 Employee 表中的数据转换为 XML 文件。

Convert Sql Table to XMLFile

XML 文件中的数据是:

For each Node List Enumerator XML File

SSIS Foreach NodeList 枚举器示例

在此 SSIS Foreach NodeList 枚举器示例中,我们将枚举上述 XML 文件中的节点,并将 Occupation 列信息复制到另一个数据库表中。为此,首先将 Foreach Loop Container 拖放到 Control Flow 区域。

SSIS Foreach NodeList Enumerator 3

双击它将打开 Foreach Loop Editor 进行配置。在 SSIS General 选项卡中,请指定有效的名称和描述。在这里,我们将名称指定为 SSIS Foreach NodeList Enumerator。

SSIS Foreach NodeList Enumerator 4

接下来,转到 Collections 选项卡选择 Enumerator。在这里,我们选择 Foreach NodeList Enumerator,因为我们想遍历 XML 节点。

SSIS Foreach NodeList Enumerator 5

以下是您必须为此 SSIS Foreach NodeList 枚举器配置的属性列表。

剩余迭代次数为

SSIS Foreach NodeList Enumerator 6

Document Source Type:此 SSIS Foreach NodeList 枚举器属性有三个选项。

  • File Connection:表示源是文件系统中存在的 XML 文件。您可以使用下一个属性选择文件。
  • Variables:源存在于变量中。如果选择此选项,则必须在下一个选项中选择变量名。
  • Direct Input:我们希望直接将 XML 数据插入此编辑器。目前,我们选择此选项。
SSIS Foreach NodeList Enumerator 7

如您所见,我们插入了上述指定的 XML 数据。

XML Document Source Editor

Enumerator Type:此 Foreach NodeList 枚举器属性有四个选项。

  • Navigator:这将使用 XpathNavigator 枚举。
  • Node:枚举节点。
  • NodeText:这将枚举文本节点。它对于缩小搜索范围很有用。
  • ElementCollection:它枚举 XPath 返回的元素节点。
SSIS Foreach NodeList Enumerator 9

接下来,我们提供路径。下面的路径将导航到 Employee 详细信息节点下的每个 Employ 中存在的 Occupation 节点。

SSIS Foreach NodeList Enumerator 10

现在选择现有变量并将其分配给索引 0。完成后,单击 OK 完成 Foreach Loop Container 的配置。

SSIS Foreach NodeList Enumerator 11

接下来,将 Execute SQL Task 拖放到 Foreach loop container。此任务帮助我们将值插入到我们的空表中。

SSIS Foreach NodeList Enumerator 12

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

SSIS Foreach NodeList Enumerator 13

接下来,我们编写以下查询以将表名插入 SMO_Enumerator 表。

INSERT INTO [NodeListEnumerator] ([Occupation])
                          VALUES (?)

这里的问号将被参数替换。

SSIS Foreach NodeList Enumerator 14

在开始参数映射之前,请仔细检查所有属性。

SSIS Foreach NodeList Enumerator 15

接下来,转到参数映射并选择我们在 Foreach Loop container 中分配的参数。这意味着 Foreach loop container 将遍历 XML 节点,并将 occupation 信息存储在变量中。接下来,我们将该变量传递到 Execute SQL task

SSIS Foreach NodeList Enumerator 16

单击 OK 完成 SSIS Foreach NodeList 枚举器包的配置。让我们运行该包。

SSIS Foreach NodeList Enumerator 17

让我们打开 SQL Server management studio,并检查我们是否使用 SSIS Foreach NodeList 枚举器将 Occupation 详细信息插入了目标表中。

For each Node List Enumerator 18