灵活运用SQL Server2008 SSIS变量

在SSIS开发ETL(Extract-Transform-Load),数据抽取、转换、装载的过程。我们需要自己定义变量

一、SSIS变量简介

SSIS(SQL Server Integration Services,SQL Server整合服务)变量分分为两种,一种是系统变量,一种用户定义的变量。系统变量包括有关包、容器、任务或事件处理程序的非常有用的信息。例如,在运行时,MachineName系统变量包含运行包含的计算机的名称,StartTime变量包开始运行的时间。系统变量是只读的。在SSIS中,用户变量是用户在开发的过程中根据需要申明的变量。用户变量可以使用在脚本中,在由优先约束、For循环容器、派生列转换和条件性拆分转换使用的表达式中,以及在更新属性值的属性表达式中。

在各种编程语言中申明的变量一般情况下都会有作用范围的,SSIS变量也不例外,SSIS变量也是有作用范围的。根据作用范围分类,变量分为包变量和组件变量。包变量在包任何一个组件中都可以调用,组件变量只能够在声明变量的组件中有效。在变量的窗口中可以看到变量的作用域。

可以看到i变量的作用域是整个Package1包,而myconfig变量作用域是数据流任务组件。

二、SSIS用户变量的声明、赋值、使用

1、申明变量

申明变量是非常简单、如果你要申明包变量,只要单击控制流选项卡,然后在包开发区域空白处单击右键选择变量命令,或者新建变量按钮就新建一个变量,输入名称,选择数据类型,赋初值就完成了。

如果要声明某数据流任务组件使用的变量,只要双击该数据流任务组件,在流控制控制选项卡空白的地方单击右键选择变量命名,在变量窗口中新建一个变量命令,在变量窗口中新建一个变量,这时变量的作用域就是你选择的流任务组件。

2、赋值

在实际开发中,除了在变量声明的时候给变量赋值外,还有两种方式,一种是通过执行SQL任务组件返回值的方式给变量赋值,一种是通过脚本组件来给变量赋值。

在执行SQL任务组件方法是先设置好组件的数据库连接属性,然后输入从数据库取数据的SQL语句,设置组件返回的结果集为单行。在结果集界面中单击“新建”,在结果集那一列输入你刚才SQL返回列的名称,在变量名称列选择你要赋值的变量

图中红色方框中的SQL语句非常简单,返回单行,结果是1。在图4中,将返回的result列的一行赋值给用户变量i。

利用脚本组件赋值变量比较简单,只需要设置脚本组件的ReadOnlyvariable或者ReadWriteVariable,将变量的名称设置他们的值(多个变量以逗号分割),它们的区别是前者在脚本组件只能够读,或者可以读写。然后在脚本组件中通过

Dts.Varables("变量名称").Value=值

3、变量的使用

变量在ssis中使用的地方很多,笔者介绍两个典型的应用。

  (1) 执行 SQL 任务组件的参数

  假定申明了一个日期类型变量StartDate,用户需要通过从某个表中选择在StartDate日期之前的数据,这个时候需要将StartDate作为参数传给执行 SQL 任务组件。在执行 SQL 任务组件输入SQL的地方输入如下命令语句:

SELECT * FROM TABLE_a WHERE 日期字段 < ?

  然后在参数据映射界面新增映射,在变量名称列选择用户变量StartDate,选择类型为DATE,在参数名称列输入给参数取的名称。这样就可以将StartDate变量传给SQL任务组件的SQL语句了。

  (2) 在脚本组件中赋值

  可以在脚本组件中通过Dts.Variables("i").Value = 1方式赋值给变量,也可以通过这种方式来使用变量。比如Dts.Variables("other_variable").Value = Dts.Variables("i").Value+1,这个语句是可以在脚本组件中执行的,将i变量加1后赋值给另外一个变量。

原文地址:https://www.cnblogs.com/shuihaya/p/12114179.html

时间: 2024-10-31 07:16:50

灵活运用SQL Server2008 SSIS变量的相关文章

在SQL Server2008中声明和初始化变量的新写法

1 DECLARE @temp INT = 1; 2 PRINT @temp; 或者 1 DECLARE @temp AS INT = 1; 2 PRINT @temp; 能够用同一语句声明和初始化变量是SQL Server2008的新功能.在早期版本中,应使用单独的DECLARE和SET语句.

第十三篇 Integration Services:SSIS变量

本篇文章是Integration Services系列的第十三篇,详细内容请参考原文. 简介在前一篇我们结合了之前所学的冒泡.日志记录.父子模式创建一个自定义的SSIS包日志记录模式.在这一篇,我们将升级我们的解决方案为SQL Server 2012 Integration Services,演示SSIS变量,变量配置和表达式管理动态值.在前面的练习中我们已经使用过变量,但我们没有深入学习,这一篇,我们将关注SSIS变量.…………一旦安装好,你可以设置主题颜色,工具->选项->环境->常

SSIS变量属性中EvaluateAsExpression设置的作用

我们在做SqlServer SSIS包开发的时候,经常会用到SSIS的变量,我们可以使用和修改SSIS变量的值使得SSIS包的逻辑更灵活,如下图所示: 在定义SSIS变量的时候可以使用固定值(如上图中的变量Number),也可以是使用表达式(如上图中的变量Sql),使用表达式的时候可以让变量去使用另一个变量的值,比如下图是变量Sql的表达式,其中就使用了变量Number的值: 顺便说一下,本文上面的截图都是基于SqlServer2012的SSIS包,也就是VisualStudio 2010的SS

myEclipse6.5与数据库(SQL Server2008)连接遇到的问题你解决了吗?&lt;用SSH框架的时候,用servlet+javabean+jsp的时候&gt;个人经验总结

昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题.废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是任性) 请注意:这是在myEclipse6.5+SQL Server2008的前提下出现的问题,当用mySQL或者SQL2000以前,或者用oracle云云时,里面用的jar包都不一样的!不可参照下列哦~ 1.MyEclipse 数据库连接创建失败,出现 Driver class not found 这是搭建SSH框架,在数据库连接时加载

SQL Server 表变量和临时表的区别

一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用).定义表变量的语句是和正常使用Create Table定义表语句的子集.只是表变量通过DECLARE @local_variable语句进行定义. 表变量的特征: 表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自

SSIS – 变量和表达式

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

[转]SQL Server 表变量和临时表的区别

一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用).定义表变量的语句是和正常使用Create Table定义表语句的子集.只是表变量通过DECLARE @local_variable语句进行定义. 表变量的特征: 表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自

[译]Stairway to Integration Services Level 13 -SSIS 变量回顾

介绍 在前一篇中我们组合了已经学过的事件冒泡 event bubbling, 日志记录 logging, 和父子模型 Parent-Child pattern 建立了自定义的SSIS包日志记录. 本文中, 我们会将我们的解决方案升级至 SQL Server 2012 Integration Services 并且展示 SSIS变量 (SSIS variables), 变量(variable configuration), 以及通过表达式处理动态值 (dynamic value managemen

SQL SERVER2008数据库常识

连接数据库的方式: 1 .SQL SERVER 身份验证法:需要输入用户名和密码验证才能连接到数据库. 2 .Windows 身份验证法,点击连接,直接访问到数据库. 2.怎么在Microsoft SQL SERVER2008数据库上修改用户名和密码: 打开数据库--------点开安全性文件夹: 点开登录名的文件夹------找到自己数据库里面的所有数据库的用户名(在我本机使用的是sa),然后鼠标右击-----属性,在弹出页面修改用户名和密码即可. 3.Microsoft SQL SERVER