• 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上的分割,以满足审美需要。

  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/ljhdo/p/5788798.html
Copyright © 2020-2023  润新知