SSIS中 For Loop简介及实例

252 阅读5分钟

SSIS For Loop

SSIS For Loop的定义

For Loop容器将重复SSIS中的SQL集成服务活动,直到提供的表达式为False。在每一种编程语言中,它都与For Loop相同。For Loop容器是一个循环容器,它重复自己直到一个条件为真。

什么是SSIS for loop?

容器是帮助组织一个或多个任务的SSIS对象。例如,这些可以帮助我们在一系列的任务上循环,直到达到一个要求,或者在概念上将一组任务分组。容器也可以被嵌套,一个容器在另一个容器中。例如,一个任务的循环实现是一个For循环任务,它评估一个表达式并通过程序循环直到结果为假。

1.在一个新的名为Container的SSIS项目中将标准包重命名为ForLoopContainer.dtsx。

2.在ForLoopContainer.dtsx包中建立一个名为Counter的新变量。如果参数窗口仍未打开,他们可能需要打开它。右键单击设计窗格,选择变量,或者选择包开发屏幕右上角的变量图标。

  1. 窗口打开后,单击 "添加变量 "按钮。接受变量的默认值(int32)和默认数字值0。

3.要启动编辑器,把For Loop容器拖到控制流中,然后双击它。

SSIS for loop 配置

我们希望使用SSIS在几个数据库服务器/实例中运行相同的SQL语句。

这里有一个策略。

该方案需要三个步骤:

1.将所有目标数据库的连接字符串加载到一个包内的SSIS对象类型变量中。

2.对象变量的内容,并使用ForeEachLoop容器遍历每个连接字符串。

3.剩下的就很简单了:在ForEachLoop容器内,将执行SQL任务与必须在所有目标实例中运行的SQL语句放在一起。

使用SSIS表达式的威力是唯一的答案!在内部的Execute SQL Task(s)连接管理器中添加一个表达式,用For Loop容器在每次迭代时生成的变量内容来改变连接字符串。在整个这个例子中,让连接字符串在一个SQL数据库中,但随后我们可以将它们存储在一个平面文件或SSIS可以连接到的其他地方。有时,写一个查询来给出所有的实例可能很平常,但我喜欢保存这些值,以便对任务进行具体控制。

SSIS for loop Container

假设我们有两个源文件夹,一个是 "silver id",另一个是 "RUPAY ID",每个目录里面有很多数据源文件与 "silver id "和 "RUPAY ID "源文件耦合。所以,我们喜欢循环两个目录,但仍然只考虑 "silver id "和 "RUPAY ID "命名的多个源文件,用于ETL过程,因为我们不会想采取其余的准文件类型。

步骤一

假设我们使用一个简单的文件规格(silver id *)来重复两个目录内的源文件,我们只能在这一个文件夹内循环源文件。它不能返回到根目录,在另一个有不同文件规格(Rupay ID *)的文件夹中循环。因此,只用 "FOR LOOP "来传递目录路径和文件规格,即(Silver id *)和(RUPAY ID *)。

第二步

这里有两个文件夹用来循环处理文件,如下图所示。

1

第三步

将FOR-LOOP容器拖到控制标签上,然后将整个for-loop容器内的每个循环拖动。一旦项目建立,我们将研究如何在SSIS中使用For Loop容器任务选择。一旦我们建立了一个项目,拖放下面屏幕上显示的For Loop容器。

第四步

然后,添加一个Execute SQL任务,将一些记录插入到一个表中。我们将利用Loop容器,在每次循环时将其插入到表中。在for-loop容器内添加Execute SQL任务的结果在下面的屏幕上看到。这个Execute SQL任务将被用来将数据插入到SQL表中。

step 4

step 4-1

step 4-2

第五步

我们将建立起For Loop容器;首先,我们将添加两个在循环过程中使用的变量。要制作一个变量,请导航到视图->其他窗口->变量,并填写下面的数值。for-loop语句有:

InitExpression。循环以初始化表达式开始;计数器变量应首先被初始化(例如,@counter = 1或@i = 1)。

EvalExpression。计数器变量与前提条件比较时的值。如果条件为 "True",For-loop元素将被执行。最终,For循环将被结束。

Assign Expression。这个语句将在每个迭代结束时执行。它允许我们根据我们的需要调整计数器的参数。

step 5

然后,请在For Loop编辑器中输入我们想要的值。For Loop将从0开始运行,直到达到10,每次迭代增加1。

step 5-1

第六步

要在SSIS中运行一个SQL任务,我们必须为每个参数设置以下属性。

从下拉菜单中选择要转化为参数的变量名称。
方向。指出参数的类型是整数还是浮点(输入、输出、返回值)
当我们查询表时,我们看到我们的for循环如期执行。因此,我们在这里创建的表是。

CREATE TABLE Airline (
Aid INT NOT NULL,
Airlinename VARCHAR(20) NOT NULL,
service INT,
City varchar (20),
PRIMARY KEY (Aid),
UNIQUE (Airlinename)
);

要想知道Package是否被正确执行,请到查询分析器中看看下面的结果。

step 6

总结

最后,我们已经看到了for循环是如何在SSIS中执行的。一个for循环将执行设定次数的任务,比如12次或20次,次数是在容器的规范中提供的。对于这个看的项目集合中的每一个项目,for每个循环将运行一次,我们在我之前的文章中已经看到了。