SSIS – For Loop Container

转载 2011年01月21日 10:17:00

今天给大家介绍 SSIS 2008 中的第一个容器:For Loop Container, 这个容器在实际的应用中用的不是很多,但是在某些特殊的场合还是很有用的。它用来实现对一个变量的循环,在循环之中对变量赋值,当满足这个循环的终止条件 的时候,它就退出这个循环。它的功能类似于结构化程序设计语言的 Do While 结构, 比如下面的结构实现了 1 到10 相加的效果。
 
A = 1
B = 0
Do While A = 10
B = B + A
A = A + 1
End

目的:

我有一个表 Clients, 它包括2个字段,ClientID 和 ClientName, 我要使用这个 For Loop Container 在这个表里增加10 个记录。Client ID 列是个 IdentityKey, 可以自动赋值,ClientName 我使用 For Loop Container 给它赋值,下面是建立这个 For Loop Container 的步骤。

现在我就用一个例子来说明它的使用方法:

  • 新建一个 SSIS Pakcage, 把它命名为 SSIS Containers
  • 增加两个系统变量:LoopValue, Int32, 它用来保存我们循环中将要用到的循环变量的值;EndValue, Int 32, 它用来保存循环的终止值,我把它设定为10.
  • 把 For Loop Container 从工具箱中拖到 Control Flow 页面中
  • 双击这个 For Loop Container, 打开 For Loop 的编辑器,这个编辑器的页面和简单,最重要的设置就在当前的 For Loop 页中,它有三个属性需要设置
    • InitExpression: 初始值表达式,用来对循环变量的赋予一个初始值,这个循环变量可以是Package 级别的变量,也可以是 Container 级别的变量,在这个表达式里我输入 @LoopValue = 1
    • EvalExpression: 判断表达式,它接受一个条件判断表达式,当不满足这个条件表达式的时候终止当前的循环;当满足条件的时候,执行下面的 AssignExpression 的操作,一直到不满足这个表达式为止。在这个表达式里输入:@LoopValue <=@EndValue
    • AssignExpression: 赋值表达式,它用来对循环变量赋值,在这个表达是里输入:@LoopValue = @LoopValue + 1。值得注意是这个表达式的设置一定要影响 EvalExpression 的值,否则的话就会形成一个无休止的循环。
  • 在这个 For Loop Container 中加入一个 Execute SQL Task, 双击这个 Execute SQL Task 来编辑它的属性
    • 使用OLE DB 连接
    • 选择(建立)到 Clients 表所在数据库的连接
    • 在 SQL Statement 中输入:

    INSERT INTO dbo.Clients (ClientName) Values (‘Name’ + Convert (Varchar,?))

  • 在Parameter Mapping 中建立一个新的变量映射,在 Varible name 下选择 User:: LoopValue, Parametername 修改为 0,数据类型修改为 LONG
保存这个 SSIS Package 并运行它。 在 SQL Server Management Studio 中查看Clients 表的内容,有10个记录增加了。

结论

在我们这个例子中最主要的部分是设置3个循环的表达式,在一些个复杂的处理中,可能这些表达式的值是动态改变的,比如 EvelExpression 也就是循环终止的变量可以不是固定的值,等等。

SSIS【Foreach 循环容器_Foreach 文件枚举器】(导入路径下的所有txt文件的内容)

SSIS_Foreach 循环容器_Foreach 文件枚举器(导入路径下的所有txt文件的内容) 1. 拖动一个 【Foreach 循环容器】到【控制流】中,再拖动一个【数据流任务】到【For...
  • kk185800961
  • kk185800961
  • 2013年10月04日 13:07
  • 6236

SSIS【Foreach 循环容器_Foreach Item 枚举器】(循环读取数据库)

SQL Server 2008 R2 SSIS_Foreach 循环容器_Foreach Item 枚举器(循环读取数据库) 1. 首先在两个数据库中创建两个相同的表。下面将演示 将这两个表的数...
  • kk185800961
  • kk185800961
  • 2013年10月04日 15:46
  • 4262

SSIS【Foreach 循环容器_Foreach ADO 枚举器】(逐行读取某个表)

SQL Server 2008 R2 SSIS_Foreach 循环容器_Foreach ADO 枚举器(逐行读取某个表) 1.创建如下表: -- drop table mytab crea...
  • kk185800961
  • kk185800961
  • 2013年10月04日 17:20
  • 5606

Keeping You in the Loop – Bash For, While, Until Loop Examples

Looping statements are used to force a program to repeatedly execute a statement. The executed state...
  • macyang
  • macyang
  • 2012年06月16日 14:19
  • 1326

SSIS:用foreach loop将一个目录下的内容导入到数据库中

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://boyi55.blog.51cto.com/434...
  • longph
  • longph
  • 2011年04月21日 15:08
  • 648

SSIS - Sequence Container 任务执行

Sequence Container是常用的container,用来将相似tasks分组,一般是用来将所有维度表和事实表的处理分开。那么将多个维度表放在一个sequence container中,是否...
  • wujiandao
  • wujiandao
  • 2012年02月12日 22:02
  • 1698

SSIS – 变量和表达式

变量和属性表达式是 SSIS 设计中非常重要的组成部分,它们是提高SSIS 灵活性的主要手段。变量和属性表达式是互相关联的,通常在属性表达式中常常使用变量,所以我把他们放在一起介绍。变量早在 SQL ...
  • plean
  • plean
  • 2011年01月21日 10:45
  • 2628

SQL 2005: SSIS – PUSHING DATA TO MYSQL USING SCRIPT COMPONENT DESTINATION

PUSHING DATA TO MYSQL USING SCRIPT COMPONENT DESTINATION
  • leamonjxl
  • leamonjxl
  • 2011年05月19日 16:28
  • 879

SSIS【For 循环容器】(循环输出数值)

For 循环的用法不可缺少就3个条件:初始值,增长最大值,递增值。 1. 设计控制流如下:【脚本任务】放到【For 循环容器】里面 2.  新建一个整型变量 3. 设置【For 循...
  • kk185800961
  • kk185800961
  • 2013年10月05日 09:47
  • 3418

SSIS FOR EXCEL 多工作簿多工作表合并

多工作簿多工作表合并,比较容易。 借用"正式竞赛[83]VBA多工作簿多工作表查询"的数据,表示感谢。 数据有80个工作簿,每个工作簿有3个工作表,总共240个工作表。 考虑数据比较大,...
  • incognito007
  • incognito007
  • 2011年12月29日 05:27
  • 959
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSIS – For Loop Container
举报原因:
原因补充:

(最多只允许输入30个字)