SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器

原文:SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器

上期回顾:

SSIS从理论到实战,再到应用(2)----SSIS包的控制流

 

首先我们来看看包里面的变量

  

   SSIS包变量分为两种,一种是系统的内置变量,是一个SSIS包初使化都会自带的,一种是用户自己定义的变量。

   在SSIS包中,常用的变量的类型包含以下:Int32,String,Boolean,DateTime,Object......

二,让我们来看看包里面的约束(线)

    

  如图中所示的线就是约束,官方的解释是这样的:优先约束在控制流中链接包中的可执行文件、容器和任务,并指定决定可执行文件是否运行的条件。在图中的表达就是,当“得到变量值”这一步执行成功后,并且满足优先约束中的条件的时候,才会执行”插入表变量“这一步。

 

先上一份官方的关于约束的解释:

求值运算

指定优先约束使用的求值运算。 运算包括:“约束”、“表达式”、“表达式和约束”和“表达式或约束”。

指定约束值:“成功”、“失败”或“完成”。

注意:

优先约束线的含义:绿色表示“成功”,突出显示表示“失败”,蓝色表示“完成”。

 

表达式

如果使用运算“表达式”、“表达式和约束”或“表达式或约束”,则键入一个表达式或启动表达式生成器来创建表达式。 表达式的计算结果必须为布尔值。

测试

验证表达式。

逻辑与

选择此选项可以指定:同一个可执行文件的多个优先约束必须一起计算。 所有约束的计算结果都必须为 True。

注意

这种类型的优先约束显示为绿色、突出显示或蓝色实线。

 

逻辑或

选择此选项可以指定:同一个可执行文件的多个优先约束必须一起计算。 至少必须有一个约束的计算结果为 True。

注意

 

这种类型的优先约束显示为绿色、突出显示或蓝色点线。

 

结合以上的解释,我们来做这样一个package:现有[Report]表一张,当发现Report表数据量大于0时,将Report表的总行数插入到Report历史表T_ReportHist中。

1)新增加一个变量TotalRowCount存储Report表的总量

 

 

2)新建一个SQL 链接器

 

 

3)先建一个SQL任务

 

   

  拖入到右边的图形界面区,双击打开这个控件的配置界面:

 

在常规栏下可以做如下的配置:

ConnectionType:选中ADO.NET

Connection:选中我们在连接管理器中先添加的DST_BITEST

SqlStatement:在这里我们要输入我们要使用的sql语句,我这里做的是:将Report表的数量存储到变量TotalRowCount中,所以SQL语句写入,select count(1) from Report

结果集:单行

 

在结果集栏目做如下的设置,这样才可以让变量TotalRowCount接收到sql语句的结果

 

4)继续新建一个sql任务

 

从左侧的控件栏目继续拉入一个sql任务 

 

在这里的SQL statement 里面,我们要明确我要做的是将变量TotalRowCount 和包的PackageName ,在这里,如果你要将变量输入,统一都用 “?” 加以代替变量的位置(占位符),语句写好,接下来就是输入参数:

这里需要注意的是,你必须按照相应的变量位置,变量类型,顺序添加你所对应的变量.

 

5)编辑约束,当脚本执行成功并且TotalRowCount>0的时候,执行插入任务!

 

 

Ok,整体执行一下看是否成功,查看T_ReportList数据也存在

 

 

时间: 2024-08-07 10:44:30

SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器的相关文章

SSIS从理论到实战,再到应用(2)----SSIS包的控制流

原文:SSIS从理论到实战,再到应用(2)----SSIS包的控制流     前文回顾:   SSIS从理论到实战,再到应用(1)----创建自己的第一个包     上次说到创建了自己的第一个包,完成了简单的数据从数据库=>数据库,以及Excel文件=>数据库过程,这一次咱们回看看一个包里面到底有哪些好玩的元素构成:     咱们一般写过代码的人都知道,很多的看似很复杂的功能都是由:顺序,选择,循环构成的.SSIS也不例外,咱们可以看到SSIS包里面工具选项卡里面已经写出他的本质了:    

SSIS从理论到实战,再到应用(6)----SSIS的自带日志功能

原文:SSIS从理论到实战,再到应用(6)----SSIS的自带日志功能 上期回顾: SSIS从理论到实战,再到应用(5)----流程控制之Foreach循环     博主最近新负责了一个ssis大项目的架构,压力山大,所以都没有怎么正儿八经的更文章了,给园友们说声抱歉,接下来的一些文章可能都比较偏重于实用技巧方面^_^.   我们都知道,不论在任何一个项目,日志系统的重要意义都是不言而喻的.   如果你的SSIS项目管理到了以百为级别,那很有必要去为它专门构建一个日志管理平台,这个时候你可以参

SSIS从理论到实战再到应用(3) SSIS包的变量,约束,常用容器

首先我们来看看包里面的变量 SSIS包变量分为两种,一种是系统的内置变量,是一个SSIS包初使化都会自带的,一种是用户自己定义的变量. 在SSIS包中,常用的变量的类型包含以下:Int32,String,Boolean,DateTime,Object...... 二,让我们来看看包里面的约束(线) 如图中所示的线就是约束,官方的解释是这样的:优先约束在控制流中链接包中的可执行文件.容器和任务,并指定决定可执行文件是否运行的条件.在图中的表达就是,当"得到变量值"这一步执行成功后,并且满

SSIS从理论到实战再到应用(2) SSIS包的控制流

上次说到创建了自己的第一个包,完成了简单的数据从数据库=>数据库,以及Excel文件=>数据库过程,这一次咱们回看看一个包里面到底有哪些好玩的元素构成: 咱们一般写过代码的人都知道,很多的看似很复杂的功能都是由:顺序,选择,循环构成的.SSIS也不例外,咱们可以看到SSIS包里面工具选项卡里面已经写出他的本质了: SSIS包里面功能元素包含以下图所示: 控制流元素:控制包的整体执行顺序,以及执行方式 数据流元素:控制数据Load(数据从哪里来,到哪里去) 我们先来看看控制流元素:SQL Ser

SSIS从理论到实战,再到应用(4)----流程控制之For循环

原文:SSIS从理论到实战,再到应用(4)----流程控制之For循环 上期回顾: SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器         在SSIS体系中,控制流可能经常会遇到,比如你取得一列数据,需要循环这列数据然后做相应的操作时,就需要用到循环,下面,我来操作两种循环方式,FOR循环和Foreach循环.   一,For循环      写过代码的知道,For循环的常用写法是这样的:For(var i = 0 ; i < 10 ; i++){  //do

SSIS从理论到实战,再到应用(7)----常用的数据类型转换操作

原文:SSIS从理论到实战,再到应用(7)----常用的数据类型转换操作 上期回顾: SSIS从理论到实战,再到应用(6)----SSIS的自带日志功能   在抽取各种应用的数据时候,经常会遇到数据需要转换类型的操作,比如日期在源数据库是dbtime类型,在本地需要用到字符串,这个时候有两种常用的方案来解决: 1.通过语法在源数据库进行类型转换,类似sqlserver的convert(要转换的类型,长度).... 2.利用ssis自带的组件进行类型转换 本期选用第二种方案做演示.(背景,将exc

SSIS从理论到实战,再到应用(1)----创建自己的第一个包

原文:SSIS从理论到实战,再到应用(1)----创建自己的第一个包     其实,如果你使用sql2008的导出导入工具的时候,你就已经在使用包了.     目标:使用sql2008 导入导出工具,导入excel数据,并得到一个package,然后查看package的设置      ====>最后得到SSIS包   我们梳理一下,我们的目标是什么:将excel的数据导入到了数据库中,那必然有这几个动作 1.创建表 2.将数据导入到我们创建的表中 Ok,这样我来将这个包打开来看看是否有至少两个动

SSIS从理论到实战,再到应用(5)----流程控制之Foreach循环

原文:SSIS从理论到实战,再到应用(5)----流程控制之Foreach循环 上期回顾: SSIS从理论到实战,再到应用(4)----流程控制之For循环     上一期讲了For循环,Foreach循环相比而言要更复杂一点,里面涉及变量的类型,数据接收问题,下面我用一个简单的示例来演示Foreach循环容器:     假设我们有这样一个需求:     从数据库中取出一列数据,循环输出这列数据的每个值     一,拖入sql任务,定义一个Object类型的变量接收取到的数据         

SSIS从理论到实战,再到应用

原文:SSIS从理论到实战,再到应用   一,是什么(What?)    1.SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案(包括数据仓库的提取.转换和加载 (ETL) 包)的平台.    以上的这段文字来自于百度,脱离这个概念,我一直再思考如何向普通人解释SSIS这一套体系:我觉得我自己解释很有可能不到位,所以特意去知乎里面问了这个问题:    如何解释SSIS    貌似没有很好的效果,我所理解的SSIS是这样