SSIS 组件使用 Foreach Loop Container and Execute SQL Task

来源:互联网 发布:倩女幽魂游戏mac版 编辑:程序博客网 时间:2024/06/07 23:57

http://www.cnblogs.com/zsjtianya/archive/2012/06/24/2559736.html

 (2)

对cnblogs的这篇文章,进行一点补充,第三步写的不够明白.

1介绍组件

   1).Foreach Loop Container

   2).Execute SQL Task

2.功能介绍

  1).Foreach Loop Container 是一个循环遍历的容器,类似于C#中的foreach

  2).Execute SQL Task 就是一条Sql命令。

3.使用操作

Foreach Loop Container。首先场景是这样的,我有一大堆sql脚本在一个文件夹里面,

   我想将这些脚本执行到数据库上。这个场景是我们做系统开发的时候遇到一些常见的问题。解决

   方法有多种,我这里主要来讲用SSIS怎么实现。

   首先建立一个工程,将Foreach Loop Container组建拽上。我的本地有一个Sql文件夹,里面有三个

脚本,分别是创建上个表的脚本。我sqlserver2008本地有一个数据库SSISTestingBase,里面没有

  用户创建的表。

  Step1.选择Foreach Loop Container

  Step2.编辑->集合->文件夹

  我们将选择有sql脚本的文件夹,后面的files,我们填写*.sql

  这个意思只要是学计算机的都非常明白是什么意思。

  后面的选项是返回一个文件的全部路径还是名称等,同时还可以遍历子文件夹。

Step3.我们要添加一个Execute SQL Task 到foreach容器里面,同时要设置一个变量,来

保存每次容器读取的Sql脚本路径,

这个变量可设置位置是: Foreach Loop Container,右键单击-->Edit-->Variable Mappings, 在这里定义一个变量Sql, 它的index只能是0(,因为它要取返回来的结果集的第一列,

对以文件来说,它只有第一列)

 

然后将sql脚本路径给Execute SQL Task 执行。

添加完变量之后,我们在容器中要做一个变量的mapping。

 

Step4.Execute SQL Task 执行的属性设置

首先要设置连接 (,就是执行到那个数据库。

其次要执行的类型,是变量执行还是直接脚本。

但是我们foreach读出来的是一个文件路径,那怎么得到

路径的文件呢?

我们选择类型的时候,肯定要选择File connection,这样就会弹出一个

框,要你选择是创建还是已经存在的文件,我们这里当然要选择创建。

然后选择连接管理器,设置文件的连接变量,也就是foreach读出的文件路径。

选择SqlFile,右键属性,选择Expressions,选择ConnectionString

选择按钮来选择变量

将Sql变量拽到Expression,点击Ok完成。

到目前,我们的工程就完成,测试能否执行。

 

 

原创粉丝点击