SSIS 容器
容器(Container)是控制流的特殊的任务(Task),它为一个或多个Task提供逻辑组合,可以实现工作流的重复执行和顺序执行,还可以把变量和事件处理程序的作用域缩小到容器中。不能在容器内的Task和容器外的Task之间创建优先约束,一旦把Task存放到容器内,那么只能创建容器的优先约束。SSIS包含四种类型的容器:任务宿主容器,序列容器,For循环容器和Foreach循环容器。任务宿主容器是默认容器,每个Task默认都属于该容器,并只能在SSIS后台使用。
一,序列容器
序列容器负责处理容器内的工作流,并能把Package划分为更容易管理的分组,一般来说,使用容器来实现:
- 序列容器可以把变量的作用域缩小到容器内;
- 在单个容器内创建事件处理程序,如果容器内的任何Task失败,可以触发事件处理程序;
- 确保在执行下一个Task之前,容器内的多个Task被成功执行。
容器内的Task可以单独执行,这使得容器很像一个子Package。
二,For容器
For循环容器类似于编程语言中的For循环结构,在循环开始前,For容器计算一个初始值,并评估(Evaluate)初始值是否满足条件,如果满足条件,开始第一轮循环。
进入后续的循环时,For容器都计算一个迭代变量,并评估(Evaluate)迭代变量的值是否满足条件,如果满足条件,继续循环;如果不满足条件,结束循环。
For循环容器的循环属性:
- InitExpression :提供初始化该循环所用值的表达式(可选),该属性会覆盖变量的初始值。
- EvalExpression :提供用于计算循环应停止还是继续的表达式。
- AssignExpression :提供在每次循环重复时更改条件的表达式(可选)。
在使用For循环容器之前,需要创建用于迭代的变量,而迭代变量的初始值,可以通过变量来赋值,也可以通过InitExpression 属性来赋值:

设置For 循环容器的属性,设置迭代变量的初始值,评估表达式和更新循环条件:

For循环容器内的Task可以修改迭代变量的值。
三,Foreach循环容器
Foreach循环容器是一种功能强大的循环结构,其循环的实现类似于编程语言中的Foreach循环结构,用于遍历一个对象集合。
Foreach循环容器有8种枚举器,分别是:
- Foreach File Enumerator
- Foreach Item Enumerator
- Foreach ADO Enumerator
- Foreach ADO.NET Schema Rowset Enumerator
- Foreach From Variable Enumerator
- Foreach NodeList Enumerator
- Foreach SMO Enumerator
常用的枚举器是前三个,通过这些枚举器,用户可以遍历集合的所有元素,通过Foreach循环容器获取的是集合中的元素。用于可以通过Foreach循环编辑器来设置枚举器的类型:

下文逐个介绍常用的枚举器及其用法。
1,遍历文件
当需要遍历指定目录下的所有文件时,可以选择Foreach File Enumerator,配置枚举器
- Folder:用于指定遍历目录的路径,
- Files:用于指定文件名的模式,* 表示任意字符
- Retrieve file name:用于指定获取的文件名的格式
- Traverse subfolders:是否遍历子目录

配置完枚举器之后,需要在变量映射中,设置变量来接收每一次循环获取的文件名称:

Foreach循环容器会遍历目录 D:\ShareFolder 中的所有txt文件,然后,把获取的文件名赋值给变量User::FileName。
2,遍历列表
当需要遍历特定集合中的所有子项时,可以选择Foreach Item Enumerator枚举器,通过Columns按钮定义枚举器的列和数据类型:

在枚举器配置界面,输入集合的元素:

设置变量来接收枚举器中的元素:

3,遍历ADO集合对象
SSIS使用Execute SQL Task来返回ADO集合对象,然后使用Foreach ADO Enumerator枚举器来遍历集合中的所有元素。
首先,创建Object类型的变量:

其次,配置Execute SQL Task,设置Execute SQL Task返回的结果集,类型为Full result set,

设置接收结果集的变量,也就是建立结果集和变量之间的映射:

最后,配置Foreach循环容器,设置ADO枚举器的源是Object类型的变量:

在枚举器中建立枚举器的返回值和变量之间的映射,用于接收ADO对象中的行,Index代表列的序号,0代表第一列。

四,组
实际上,组并不是容器,而仅仅是把Task集合到一起,组用于对Task进行UI上的分割,以满足审美需要。
SSIS 容器的更多相关文章
- SSIS with vertica
使用ODBC进行连接,因为SSIS中没有直接的ODBC connection,所以使用ADO.NET的连接器. 九分钟才跑了四百来条数据. 这个图反应了SSIS的数据流速度还是可以的,但是瓶颈就在OD ...
- SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
原文:SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器 上期回顾: SSIS从理论到实战,再到应用(2)----SSIS包的控制流 首先我们来看看包里面的变量 SSIS ...
- SSIS - 11.For循环容器
一.For循环容器中的3个循环变量 For循环容器,类似于编程语言中的For,用于重复执行容器内的任务,直到条件返回为False.与编程语言类似,For循环容器也需要定义以下3种循环属性: 注: 必须 ...
- SSIS - 6.序列容器和优先约束
一.多样的优先约束(看例子) 1)打开一个空白的SSIS包,拖拽4个脚本任务到设计面板上,重命名后连接起来,如下图所示. 2)执行包,可以看到任务执行成功.之后我们改变C和D之间的优先约束为“失败”. ...
- SSIS的控制流之For循环容器
SSIS包由一个控制流以及一个或多个数据流(可选)组成.下面的关系图显示具有一个容器和六项任务的控制流. 这些任务中有五项定义于包级别,还有一项定义于容器级别.任务位于容器内.在控制流中的工具箱.我们 ...
- SSIS 学习(5):容器【转】
容器是Integration Services 包中非常重要的一部分功能,它可以对控制流中的任务进行直观的划分与组织,使包的结构简明扼要.易于管理.易于维护. 在Integration Service ...
- 转载SSIS中的容器和数据流—数据转换(Transformations)续
数据挖掘请求 数据挖掘任务是SSIS中一个很重要的任务,它的思想来源于一些算法.数据挖掘请求运行数据挖掘请求,并将结果输出到数据流.它还可以添加一些预测新列,一些应用场合如下列举: 根据已知的一些列, ...
- 转载SSIS中的容器和数据流—数据转换(Transformations)
对数据流来说按照需求将数据转换成需要的格式是数据操作中的一个关键的步骤.例如想要得到聚合排序后的运算结果,转换可以实现这种操作.和SQL Server 2000 DTS完全不同,这些操作不需要编写sc ...
- SSIS之Foreach循环容器用法
要实现的业务:A数据库服务器上某库的T_GOODS_DECL的状态字段“Is_Delete”标记为“1”的时候删除B数据库服务器上对应库的T_GOODS_DECL表中的记录,二者的主键为“DECL_N ...
随机推荐
- Hadoop HBase概念学习系列之HBase里的长表VS宽表VS窄表(十五)
有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险. ...
- September 02nd 2017 Week 35th Saturday
Some things are more precious because they don't last long. 有些东西之所以弥足珍贵,是因为它们总是昙花一现. Life is ephemer ...
- 第二次作业:找Bug
引子 我真的想了一个小时,上哪里去找bug.我昨天还留意到一个bug,今天就不见了.灵光不断,我想起来了.我就要找大公司的产品的bug... 第一部分 调研, 评测 体验. <腾讯桌球>是 ...
- Maven实战(十一)eclipse下载依赖jar包出问题
问题描述 在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖 大致错误如下: ArtifactDescriptorException: Failed to read arti ...
- 1.4 Installation and Setup(安装和设置)
1.4 Installation and Setup(安装和设置) 这里我们用Anaconda发行版作为Python的使用环境,推荐安装Python3.6,本书就是用Python3.6代码写成的.(译 ...
- ubuntu16.04更新内核--使用4.6以上的内核会让用A卡的Dell电脑更快--及卸载多余内核
tips:我自己就是Dell的A卡电脑,用16.04桌面感觉不如fedora流畅,后来手动升级到4.6.2内核,发现可以和fedora与windows一般桌面操作流畅度. 我试过了4.7的开发版内核, ...
- 【转】decorView和window之间的层级及关系
转载请注明出处:http://blog.csdn.net/guxiao1201/article/details/41744107 首先贴出实现Activity对话框圆角的核心代码 @Override ...
- 20165302 ch02 课下作业
20165302 ch02 课下作业 作业内容 补充完成课上测试(不能只有截图,要有分析,问题解决过程,新学到的知识点) 完成教材 p97 2.96 2.97,要有完备的测试 发一篇相关内容的博客, ...
- Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?
问题1:Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办? 答:在word2010中,菜单栏中最左侧选“文件”->“选 ...
- snapkit更新约束崩溃的问题
最近在使用snapkit布局时,竟然发现更新约束会导致崩溃,为什么这样呢? checkButton.snp.makeConstraints { (make) in make.left.top.equa ...