Integration Services 学习(5):容器
不仅如此,如果点击右上角象箭头一样的符号,还可才把这些容器折叠起来,整个包就更加清楚明了,一目了然了。如图:
(二)For 循环。
For 循环组件,类似于编程语言中的For 循环,当人们需要反复执行同一个工作任务或者一系列工作任务的时候,就需要用到For 循环,它既可以用于有限次循环,也可以用于“无限次循环”,比如我们监控包的运行状况,当错误数据>=5时,包停止运行,并通知管理员;又如监控某个文件夹是否有新文件产生、监控网络链接是否正常、监控服务器的各项指标(Cpu、内存)是否正常等,论询特定事件是否发生,这就可以设置为无限次循环。
For 循环的使用非常简单,它主要有三个表达式,分别控制循环的执行和终止,如图:
按照如图所示,完成表达式的值,For 循环就算完成了(@ErrorCount 是用户自定义变量,需要按照上一课的内容,先定义变量,此处才可以使用)。然后再将需要重复执行的任务,拖入For 循环容器中就可以了。
(三)Foreach 循环。
在.net 编程语言中,有一个循环也叫做Foreach ,从语义来讲,这两种循环如出一彻,没有什么差异。在Integration Services 中,Foreach 循环是最重要的一种循环,也是使用最频繁的一种循环,常用于对一个集合对象中的每一个元素,都要进行处理的场景。比如枚举某一个文件夹下的所有文件,枚举一个DataTable 中的某一条记录、枚举一颗树(tree )下的每个结点(Node)等。下面我们将Foreach 最常用的两种类型:Foreach 文件枚举器、Foreach ADO 枚举进行简单的说明。
Foreach 文件枚举器。
通常情况下,我们需要循环处理某一文件夹下的每一个文件,这时就需要用到Foreach 文件枚举器了,比如前面我们说到IISLOG的导入,IisLog 文件很多,每天都会产生很多个这样的文件,如果靠手工一个一个地处理,将很不现实,工作量非常大,如果我们用Foreach 文件枚举器,就会非常简单。如图,打开Foreach 循环编辑器:
Enumerator:Foreach 枚举类型。在Foreach循环中,有很多种枚举类型,每一种枚举类型,就代表着一种使用场景,它们的使用方法也各不相同。每一种枚举类型的意义及使用方法,请参考官方文档:http://technet.microsoft.com/zh-cn/library/ms187670(SQL.90).aspx 这里有非常详细的说明。
我们选择“Foreach 文件枚举器”,然后在枚举器配置项中,输入文件夹的位置(注意这里是文件夹的位置,而不是文件的位置),输入文件名通配符(如*.log
*.txt 等),其它按照默认设置就可以了,如果需要遍历文件夹下的子目录,请勾选“遍历子文件夹”选项。
下一步,选择“变量映射”,如图:
点击“确定”,回到控制流开发面板。
最后,在“连接管理器”中,找到映射log 文件的平面文件连接(IisLog),设置属性Expressions 的ConnectionString =User::LogFile。
Foreach 文件枚举器就算完成了,F5就可以达到你你想要的效果了。结果如下:
其中的“文件系统任务”是将处理完成的文件复份到另外一个文件夹,或者删除,以免重复执行。
Foreach ADO 枚举器:枚举表或者表中每一行记录。
这种枚举器在日常开发过程中,也用得非常普遍,类似于TSQL中的游标,先Select 出一批数据,存储在ADO记录集中,然后再一行一行地处理。
假设有一个商业公司,它在全国或者全市的各个地方,都有连锁专卖店,每个专卖店都是通过POS进行销售和收银,为了保证前端销售快速稳定地运行,POS系统一般都采用C/S模式,数据与系统程序都存储在本地。集团公司的中高层主管为了随时了解各专卖店销售经营情况,就需要定时或者不定时地将专卖店的数据同步到总部数据中心。
如果我们对每个专卖店DB,都建立一个链接,再建立一个对应的同步任务,随着专卖店的增加,同步任务也随之增加,到最后,功能类似的同步任务就会越来越多,而且每增加一个专卖店,ETL包都要增加一个任务,管理起来,将非常困难。
根据我的经验是,在总部数据中心建立一张表,专门配置各专卖店DB的链接凭证(ConnectionString), 在同步时,先Select 出各DB的ConnectionString ,然后再动态创建DB连接。这样一来,程序就小巧、稳定多了。下面我们来看看如何实现这一需求:
首先,定义两个变量,一个于用存储ConnectionString(字符型);一个用于存储ADO 记录 集(Object 型)。如图:
然后在控制流中增加一个SQL任务,配置如下:
Connection:选择“数据中心”的链接器。
SQLStatement: 输入如下SQL,以取出所有配置记录。
';Initial Catalog=HumanResource;Provider=SQLNCLI10;Auto Translate=True;' AS
ConnectionString
FROM DbConfig
ResultSet :选择“完整结果集”。
然后切换到“结果集”,配置结果集选项,如图:(注意:User::DataSet 一定要是Object 类型的变量,其它变量都不可用)
点击“确定”,就完成了各DB的连接配置,下面就看Foreach ADO 循环如何来应用这个结果集了。
找开Foreach 循环编辑器,在Enumerator 中选择“Foreach Ado 枚举”,如图:
请注意如图所示的每一个选项,如果选错,都可能达不到你想要的效果。
变量映射,如图:
最后一步,就是将变量映射到OLE DB 的连接上了,从连接管理器中,选择 DB连接,右击配置Expressions属性的ConnectionString =User::ConnectionString ,如图:
整个Foreach ADO 循环完成了,F5一切如你所愿,绿油油的一遍就会呈现在你的眼前。
常用的三种容器就介绍完了,当然还有一些其它容器,比如一个包,是一个容器,一个分组(在控制流中选择一批任务,右键菜单“分组”,就可以将这批任务放在一个Group 内)也是一个容器,但是这些容器都非常简单,就此略过,不做详细说明。
在Inegration Services 中,容器还可以嵌套,每个容器都可以相互嵌套,它们可以有各自的作用域,有各自的命名空间,如果我们善加利用,将会为Integration Services 的结构化开发,提供很多的方便。
导读:
SSIS 学习(1) 概要
SSIS 学习(2):数据流任务(上)
Integration Services学习(3):数据流任务(下)
Integration Services 学习(4):变量和表达式
Integration Services 学习(5):容器相关推荐
- Integration Services包部署常见问题汇总 (转自游子吟)
Integration Services 包在部署过程中,经常会出现这样那样的问题,让人摸不着头脑,很是烦人.下面我就将我在部署过程中,遇到的一些问题整理出来,以供大家参考. (一)SSIS包在SQ ...
- ETL学习之四:SQL Server Integration Services入门
ETL学习之四:SQL Server Integration Services入门 SSIS就是微软在SQL SERVER2005上对DTS的升级,不得不说,微软在BI上是花了很大功夫的,包括提供了S ...
- ETL学习之五:创建新的 Integration Services 项目
在 Microsoft SQL Server 2005 Integration Services (SSIS) 中创建包的第一步就是创建一个 Integration Services 项目.此项目包含 ...
- 【译】第十篇 Integration Services:高级事件行为
本篇文章是Integration Services系列的第十篇,详细内容请参考原文. 简介 在前一篇, we introduced fault tolerance by examining metho ...
- SQL Server 2005 Integration Services (SSIS) (3)–Business Intelligence Development Studio (BIDS)
转自 http://hi.baidu.com/ljghcg/blog/item/34b9998b2358bcd6fd1f10ea.html 在上一节中,我们介绍了利用 SQL Server 导入/导出 ...
- SQL Server 2005 Integration Services (SSIS) (2) - 导入/导出向导
下面通过一个例子,利用最新的SQL Server 2005 Export/Import 向导来建立一个简单的SSIS Package (包),这个SSIS将把SQL Server 2005 自带的Ad ...
- [译]Stairway to Integration Services Level 13 - SSIS 变量回顾
介绍 在前一篇中我们组合了已经学过的事件冒泡 event bubbling, 日志记录 logging, 和父子模型 Parent-Child pattern 建立了自定义的SSIS包日志记录. 本文 ...
- [译]Stairway to Integration Services Level 10 - 高级事件活动
介绍 在前一篇文章中我们介绍了故障容差相关的 MaximumErrorCount 和 ForceExecutionResult 属性. 同时我们学习了SSIS Control Flow task e ...
- SQL Server Integration Services 包的开发与部署初探
说到数据库之间的数据同步,我们经常会结合的SQL Server 2000中的DTS和作业功能来实现按时.按条件的数据传输.但是SQL Server 2005 以后,不再支持SQL Server 200 ...
- 学习Docker容器时,错误bash: ping: command not found的解决方法
问题描述: 学习Docker容器时,在容器内进行ping时出现错误,提示如下:bash: ping: command not found 解决方法: 直接安装即可,命令如下:apt-get insta ...
最新文章
- python:Json模块dumps、loads、dump、load介绍
- 深度学习在搜索业务中的探索与实践
- 树莓派进阶之路 (037) - 设置树莓派3 B+的静态IP
- vs编译慢原因和解决方法
- C#调用Power Shell 管理Office365 执行脚本时遇到的问题
- 股票和基金,哪个适合打工族?
- Mac卸载Anaconda
- 虚拟机文件上传至dsm服务器,群晖还可以这样玩!VMM虚拟机无损尝鲜DSM7.0
- matlab图像取样和量化,一文看懂数字图像的取样和量化
- 2021届校招求职计划、总结
- 计算机视觉论文-2021-07-30
- cta 音频测试_CTA入网认证一般测试哪些项目流程
- 金融知识普及知识竞赛
- 低成本快速上链 智臻链开放联盟网络正式对外开放
- 制作esp32-cam拍照上传,微信小程序照片显示的监控小车
- day40 ORM sqlalchemy
- 阿里的“无用”和“有用”
- 2.Java基础数据类型
- 时无英雄,使竖子成名!
- 1个神经元 传两个神经元_硅神经元
热门文章
- 算法总结之 将单链表的每K个节点之间逆序
- MVC源码解析 - UrlRoutingModule / 路由注册
- maven install 读取jar包时出错;error in opening zip file
- MVC 异常处理机制
- (转)Emmet(Zen Coding)官方文档 之缩写语法
- 2011-8-4 今天完成了去掉上传文件(input type=file)的框框 哎 人家客户不要框框。...
- PHP Filter 简介
- jquery validate使用笔记
- 利用iMazing备份功能替换游戏存档
- EasyRecovery软件帮你快速恢复图片数据