SSIS – For Loop Container

今天给大家介绍 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 <[email protected]
    • 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 也就是循环终止的变量可以不是固定的值,等等。

时间: 2024-08-27 09:18:34

SSIS – For Loop Container的相关文章

ssis freach loop container 传入变量给 某些数据源的时候。

应该选择loop container ,设置delayvalidateion为true. 这样数据源控件就不会报empty的错误.

使用 SSIS Foreach Loop 容器 – Foreach Item Enumerator

Foreach Loop 容器是SSIS 结构化控制流设计中一个非常常用的控制流任务,它用来遍历一个集合中的所有对象,然后执行相同的操作,它的功能类似于结构化程序设计中的Foreach i in 集合…END 结构,在SSIS中这些可以定义的集合包括: 项目集合 (Foreach Item Enumberator)文件集合(Foreach File Enumberator)记录集合 (Foreach ADO Enumberator)表结构集合 (Foreach ADO.NET Schema En

SSIS包Container组件之Sequence Container

SSIS包的Container组件共有三个,分别是Sequence Container,For Loop Container 和 Foreach Loop Container.其中Sequence Container是最简单的,作用是归类,组织task的UI,便于查看,但是它的作用并不局限于此. 打开Sequence Container组件的属性,可以看到跟Transaction相关的属性,后续我会整理一份随笔,记录我对package的transaction的理解.

SSIS入门与进阶

SSIS是从MS SQL 2005开始引入的,实际上是DTS的马甲,是SQL Server Integration Service的缩写.DTS也好,SSIS也罢,都是ETL(Extract Transform Load)工具,一般用来导入数据到数据库.SSIS比普通的ETL更进一步,它是可视化的,用Visual Studio来开发,包文件(*.dtsx)采用的是XML格式.跟Office2007+系列文档扩展名一样,都是???x,代表xml格式,但他没有压缩成zip文件罢了. 首先使用SSIS

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。

整个流程 Step 1 放置一个FTP Task 将远程文件复制到本地 建立FTP链接管理器后 Is LocalPatchVariable 设置为Ture 并创建一个变量设置本地路径 Operation 设置为 Receive files OverwriteFileAtDest 设置为True 同样的设置远程路径变量 Step 2 放置一个Foreach Loop ,循环将文件内容导入到数据库 Collection 页中Enumerator 选择Foreach File Enumerator 图

SSIS 自测题-控制流控件类

说明:以下是自己的理解答案,不是标准的答案,如有不妥烦请指出.         有些题目暂时没有答案,有知道的请留言,互相学习,一起进步. 62.描述一下 Execute SQL Task 的作用,在 ETL 开发过程中哪些情况下会使用到 Execute SQL Task?     执行SQL语句,获取单个数据,获取数据集合 63.在 Execute SQL Task 中的 Parameter Mapping 中 Direction 有哪几种类型?     三种:Input ,Output,Re

SSIS 属性LoggingMode和日志记录配置的继承

在配置Package的logging时,左边的Containers,Execute SQL Task前面灰色的“√”表示Execute SQL Task继承Test Log Package的日志记录的配置.Package内的Task,Container的属性LoggingMode有三种选项:UseParentSetting,Enable和Disable. UseParentSetting表示继承Package的设置,Enable表示启动日志记录,但是需要单独配置,Disable表示不记录组件的日

微软BI 之SSIS 系列 - Execute SQL Task 中的 Single Row 与 Full Result Set 的处理技巧

开篇介绍 Execute SQL Task 这个控件在微软BI ETL 项目中使用的频率还是非常高的,也是大部分入门 SSIS 初学者最早接触到的几个控制流控件. 我们通常使用 Execute SQL Task 的场景包含但不止于以下几类: 在从源端加载数据到 Staging 表之前使用 Execute SQL Task 执行一些 Truncate 操作. 执行一些 Log 的插入,更新操作. ETL 过程中的 Merge 语句操作. XML 的输出处理. 关于如何使用 Execute SQL

SSIS – 变量和表达式

变量和属性表达式是 SSIS 设计中非常重要的组成部分,它们是提高SSIS 灵活性的主要手段.变量和属性表达式是互相关联的,通常在属性表达式中常常使用变量,所以我把他们放在一起介绍. 变量 早在 SQL Server DTS 中就引入了变量的概念,它的定义就像其他程序语言一样,起到在程序中 SSIS Package 中重复使用,灵活赋值的作用.程序设计语言中有全局变脸和局部变量的区别,从 SSIS 2005 开始,也引入了这个类似的定义. SSIS 变量从作用范围上说有两种分类:Package