SSIS ForEach 循环文件枚举器

SSIS ForEach 循环容器会根据编程语言中的 Foreach 循环类似,重复执行控制流任务 N 次。SQL Server Integration Services 提供了八种枚举器类型。本文将介绍配置 SSIS ForEach 循环文件枚举器的步骤。

它用于枚举指定文件夹中存在的文件。SSIS ForEach 循环文件枚举器还会遍历指定文件夹中存在的子文件夹。例如,您想将多个文件从一个文件夹移动到另一个文件夹,或者使用 FTP 任务将多个文件上传到 FTP 服务器等。在开始创建包之前,让我们先看看源数据。

剩余的 SSIS ForEach 循环枚举器迭代是

我们在 Documents 驱动器中有一个文件夹,我们的任务是将文本文件中的数据加载到 SQL Server 表中。下面的屏幕截图显示了该文件夹内的文件。

List of Text Filets

以下屏幕截图将显示 Employee1.txt 中的数据。

Text File 1

下面的屏幕截图将显示 Employee2.txt 中的数据。

Employee Text File 2

下面的文本显示了 Employee3.txt 中的数据。

txt File 3

以下屏幕截图显示了 Employee4.txt 中的数据。

Source Text

SSIS ForEach 循环文件枚举器

在此 SSIS ForEach 循环文件枚举器示例中,我们将枚举这些 Employee 文本文件,提取其数据,然后将它们加载到 SQL 表中。为此,首先将 Foreach Loop Container 从工具箱拖放到“控制流”区域。

SSIS ForEach Loop File Enumerator 5

双击它将打开 SSIS Foreach Loop 编辑器进行配置。在“常规”选项卡中,请指定一个有效且更有意义的名称和描述。

在继续处理其余属性之前,我们必须了解枚举器属性。从下面的屏幕截图中,您可以观察到我们正在选择 SSIS Foreach File Enumerator,因为我们想要循环遍历系统中存在的文本。接下来,单击“浏览”按钮从我们的文件系统中选择文件夹名称。

Browse Files from Folder

下面的屏幕截图显示我们正在 E 驱动器中选择 FILE SYSTEM TASK FOLDER 文件夹。单击“确定”按钮选择它。

Select the ForEach Loop File Folder

在“文件”部分,我们必须使用通配符指定类型。在此示例中,我们想要枚举文本文件,因此我们使用通配符 *.txt。

提示:如果您要处理所有扩展名,则使用 *.* 通配符。

SSIS ForEach 循环文件枚举器中“检索文件名”选项下的属性列表是

  • 名称和扩展名:如果选择此选项,它将在变量中存储文件名和扩展名。例如,Employee1.txt。
  • 仅名称:如果选择此选项,ForEach 循环将在变量中存储文件名。例如,Employee1。
  • 完全限定:如果选择此选项,它将在变量中存储路径、文件名和扩展名。例如,E:\Folder Name\Employee1.txt。从下面的屏幕截图中,您可以观察到我们正在选择此选项。
  • 遍历子文件夹:如果要检查子文件夹,请勾选此选项。
Choose ForEach Loop Text Files

接下来,我们需要将文件名存储在变量中,以便在数据流任务中使用。为此,请转到“变量映射”部分,选择用户变量(如果存在)或创建一个新变量。

ForEach Loop File Enumerator Variable Mapping

单击“<新建变量..>”后,将打开“添加变量”窗口来创建新变量。在此示例中,我们需要变量来存储文件路径、名称和扩展名。因此,我们创建一个字符串变量并将其命名为 EmployeeFile_Name。单击“确定”完成字符串变量的创建。

SSIS ForEach Loop File Enumerator Add Variable

现在选择新创建的变量并将其分配给索引 0。完成后,单击“确定”完成 Foreach Loop Container 的配置。

SSIS ForEach Loop File Enumerator 12

接下来,将数据流任务从工具箱拖放到 Foreach 循环容器中,并将其重命名为 SSIS Foreach Loop File Enumerator。

SSIS ForEach Loop File Enumerator 13

双击它将打开数据流选项卡。接下来,拖放 平面文件源OLE DB 目标

SSIS ForEach Loop File Enumerator 14

双击“平面文件源”将打开编辑器以配置连接管理器设置。如果您尚未创建平面文件连接管理器,请单击“新建”按钮打开连接管理器编辑器。从下面的屏幕截图中,您可以观察到我们正在从系统任务文件夹中选择 Employee1。

Flat File Connection Manager

我们的文本文件将列名作为第一行,因此请勾选“第一数据行中的列名”选项。

单击“列”选项卡预览列数据并更改行和列分隔符。

ForEach Loop File Enumerator 17

单击“确定”按钮关闭平面文件源连接管理器编辑器,然后单击“编辑器列”选项卡以验证列。在此选项卡中,我们可以取消选中不需要的列。

Column Mapping

双击 OLE DB 目标 并选择 OLE DB 连接管理器,然后选择数据库中存在的 [SSIS ForEach Loop File numerator] 表以插入新记录。

Destination Database and Table

单击“映射”选项卡以检查源列是否已正确映射到目标列。

Source and Destination Map

在执行 SSIS ForEach 循环文件枚举器任务之前,我们需要更改平面文件连接管理器的连接字符串设置。因为到目前为止,我们已将平面文件连接管理器配置为选择单个文件(即 Employee1.txt)。但我们的任务是选择 Employee1、Employee2、Employee3 和 Employee4。这意味着我们必须动态分配文件名。为此,我们必须更改连接管理器设置。

请从“连接管理器”窗格中选择平面文件连接管理器,右键单击它将打开上下文菜单。请选择“属性”选项。

Properties

单击“表达式”属性将打开“属性表达式编辑器”。在这里,我们必须配置连接字符串设置。因此,从下拉框中选择连接管理器属性,然后单击“...”按钮。

ForEach Loop File Enumerator 22

单击“...”按钮后,它将打开表达式生成器来构建表达式。在这里,我们将 EmployeeFile_Name 变量拖动为表达式,因为它包含系统文件夹中每个文本文件的完整路径。

ForEach Loop File Enumerator 23

单击“确定”完成 SSIS ForEach 循环文件枚举器包的配置。让我们运行包。

SSIS ForEach Loop File Enumerator 24

让我们打开 SQL Server Management Studio,检查我们是否使用 SSIS ForEach 循环文件枚举器将记录从多个文本文件插入到目标表中。

评论已关闭。