SSIS foreach 循环简介及使用教程

528 阅读5分钟

SSIS foreach Loop

SSIS foreach 循环的定义

下面的文章提供了一个SSIS foreach循环的概要。foreach循环与for循环相同,只是它没有评估阶段和控制流组件之一。这是因为我们只是在一个项目的集合上循环,并在集合中的每个对象上执行一个指定的表达式。因此,举例来说,假设我们有一个人的列表,需要在他们身上循环,而不需要评估他们或利用任何计数器(不是一个基于索引的循环)。

什么是SSIS的foreach循环?

在一个SSIS包中,Foreach循环容器定义了一个重复的控制流。用最简单的话说,FOREACH LOOP是SSIS工具箱中的一个序列标签,一般来说,它可以执行任何指定的任务。例如,如果我们有大量的源文件,并希望同时在其中加载这些文件,我们可以使用FOREACH循环。因为FOREACH循环会跨越文件夹或记录集中的东西,所以当一个文件夹中有源文件的集合时,建议使用FOREACH循环容器。使用for-each循环容器加载和遍历多个文件、目录和记录。

SSIS Foreach 循环容器

一个包可以使用Foreach Loop容器来重复控制流foreach成员的枚举器。我们必须将文件夹中的每个平面文件附加到我们添加的Foreach Loop容器中。由于SSIS使用了更多的用例场景,需要复杂的配置,Foreach循环有时会变得很危险。

在SSIS Foreach Loop容器中,有几种枚举器。在SSIS Foreach Loop容器编辑表格中,我们可以从集合标签中选择枚举器类型:

1.Foreach项目枚举器。在SSIS中可以手动定义的事物列表上循环。Foreach Loop Container的编辑器
2.Foreach 文件枚举器。循环给定目录中的全部内容。
3.循环ADO记录集中的文件条目foreach ADO枚举器。
4.ADO.NET模式。给出了一个表格中数据源的规范,有一个逐行的枚举器。
5.Foreach from Variable Enumerator。循环浏览存储在一个对象型SSIS变量(可枚举)中的元素
6.Foreach Node List 枚举器。进行有关XML输出文件的迭代。
7.Foreach SQL Server Management Objects 枚举器。这是对对象的迭代。
8.用Foreach HDFS文件枚举器对Hadoop分布式文件系统目录中的文件进行循环。

SSIS foreach Loop - 4

SSIS foreach Loop - 5

添加文件系统任务

文件系统任务执行对服务器文件和目录的操作。尽管我们可以构建一个任务来创建、复制、删除或重新定位一个文件或目录,例如,任务的所有操作都需要一个源,其中一些,如复制和转移,还需要一个目的地。

要打开文件系统任务编辑器,请双击该任务。

在 "文件系统任务编辑器 "中设置以下foreach属性值。

如果你使用一个变量来指定目标文件夹,将IsDestinationPathVariable设置为True。

当IsDestinationPathVariable属性被设置为True时,Destination Variable属性被激活。选择

  • User::DestinationFolder变量或为目标文件夹创建的任何变量--从下拉列表中。
  • 覆盖目的地。如果这个参数设置为 "假",如果目标文件夹内确实有一个与文件传输名称相同的文件,复制操作将失败。要覆盖目标文件夹中的文件,请将该属性设置为 "真"。
  • 名称。我们想给这项工作的名称由这个属性指定。
  • 描述类型。描述是由这个属性指定的。
  • 操作。此属性的操作如下:复制、删除、重命名,等等。

要将已处理的文件移动到存档文件夹,请使用文件系统任务。用下图所示的属性填写空白处。

6

不同类型的循环

数据仓库和准备系统使用循环功能,如SQL服务器集成服务。

循环有各种形状和大小,包括:

- While
- Do...While
- For
- While

在这一部分,我们将快速浏览for循环和迭代器循环,以帮助用户掌握SSIS的循环容器。在SSIS中,有多种方法来实现不同范围内的循环。

流程控制

SSIS容器for循环

SSIS Foreach 循环容器 数据流任务 在一个脚本组件内是在一个脚本任务内。

FOR LOOP:

Foreach Loop容器可用于将工作分组并多次重复相同的逻辑。此外,For Loop容器是一个稍好但非常重要的容器,用于调节逻辑流。在SSIS中,For Loop容器是运行重复性逻辑的另一种选择。此外,For Loop容器通过采用类似于结构化编程语言中for()循环的基于数值的迭代模式,提供了额外的ETL灵活性。

循环容器的ETL逻辑被执行0到n次。它有三个函数来控制循环的运行次数:
InitExpression。这个表达式设置一个变量的初始值(将计数器变量标记为零)。
EvalExpression。这个表达式决定了循环是否应该继续。这是这里讨论的三个需要价值的方面之一;其他方面是可选的。

Assign Expression:这包括伟大的赋值表达式,如增加循环的计数器:

7

For-each示例

在文件中循环的过程如下。

将Foreach循环容器拖到SSIS项目的控制流中。

我们在这里利用了三个变量:一个是文件的整个路径,另一个是后缀,最后一个是文件夹。

1

将枚举器分配给foreach枚举,并通过点击一个目录来使用这些变量,如下图所示。

2

如果我们希望访问子文件夹,请勾选遍历子文件夹框。

设置文件路径变量,它将通过点击动态映射来循环浏览文件夹和子文件夹中给出的文件。

3

结论

我们在本文中使用了Foreach Loop容器来循环浏览一个文件夹中的文件,并将它们一个一个地转移到其他目录。因此,我们已经学会了如何使用SSIS。