实例学习SSIS(一)--制作一个简单的ETL包

http://www.cnblogs.com/tenghoo/archive/2009/10/archive/2009/10/archive/2009/10/16/ssis_lookup.html

导读:

实例学习SSIS(一)--制作一个简单的ETL包

实例学习SSIS(二)--使用迭代

实例学习SSIS(三)--使用包配置

实例学习SSIS(四)--使用日志记录和错误流重定向

实例学习SSIS(五)--理论介绍SSIS

参考内容:SQLServer2005的帮助文档。

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/sqltut9/html/d6d5bb1f-4cb1-4605-9cd6-f60b858382c4.htm

ETL:数据的提取、转换和加载;

通过制作第一个包,可以了解以下内容

1、配置连接管理器(平面文件和OLE DB);

2、添加数据流任务;

3、配置平面文件源和OLE DB目标;

4、使用查找转换。

详细制包过程:

准备工作:

(1)文件源:创建一个txt文件:userinfo.txt。

          内容如下:1|张三|我是张三|男,2|李四|我是李四|女

(2)创建目标数据表:

          下面是我创建的数据库(SSIS)和表(userinfo、usersex):

         userinfo.sql

复制代码
USE   [ SSIS ]
GO
/* ***** 对象:  Table [dbo].[userinfo]    脚本日期: 10/16/2009 10:31:54 ***** */
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
SET  ANSI_PADDING  ON
GO
CREATE   TABLE   [ dbo ] . [ userinfo ] (
    
[ uid ]   [ int ]   NOT   NULL ,
    
[ uname ]   [ varchar ] ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL ,
    
[ udesc ]   [ varchar ] ( 500 ) COLLATE Chinese_PRC_CI_AS  NULL ,
    
[ sid ]   [ int ]   NULL
ON   [ PRIMARY ]

GO
SET  ANSI_PADDING  OFF
复制代码

  usersex.sql

复制代码
USE   [ SSIS ]
GO
/* ***** 对象:  Table [dbo].[usersex]    脚本日期: 10/16/2009 10:32:21 ***** */
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
SET  ANSI_PADDING  ON
GO
CREATE   TABLE   [ dbo ] . [ usersex ] (
    
[ sid ]   [ int ]   NOT   NULL ,
    
[ sex ]   [ varchar ] ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL
ON   [ PRIMARY ]

GO
SET  ANSI_PADDING  OFF
复制代码

 创建SSIS项目:

         在“开始”、“Microsoft SQL Server 2005”,找到 SQL Server Business Intelligence Development Studio,创建Integration Services 项目;

 制包过程:

         (1)配置连接管理器(平面文件和OLE DB)

                    平面文件:

         在“连接管理器”区域“新建平面文件连接”,起个名子,选好userinfo.txt。

         选择行、列分割符,如下图所示:

             

         在“高级”中重命名各个列名,并选择相应数据类型,分别是:DT_I4和三个DT_STR。

                    OLE DB:

                  

(2)在数据流选项卡中创建平面文件源。

               从左侧“数据流源”中拖拽即可,确认一下列:

 

(3)使用查找转换

                   从左侧“数据流转换”中拖拽“查找”。

                   因为userinfo.txt中性别是男/女,所以需要转换成对应的性别id才能插入到数据表中。

   如下图配置,指定连接列和选择查找列:

                  

          (4)配置OLE DB目标

                   从左侧“数据流目标”中拖拽OLE DB目标。

    在映射中确认一下输入和目标列是否对应好,同时要确认一下数据类型是否一样

       

调试包

         点击调试,如果全变绿就哦了,某一个环境出现错误会变成红色,可在执行结果中查看错误原因。

执行结果:

  select * from userinfo

        

 

 

实例学习SSIS(二)--使用迭代

导读:

实例学习SSIS(一)--制作一个简单的ETL包

实例学习SSIS(二)--使用迭代

实例学习SSIS(三)--使用包配置

实例学习SSIS(四)--使用日志记录和错误流重定向

实例学习SSIS(五)--理论介绍SSIS

 

 

 

目标:循环地连接某文件夹下的每个文件,不需要为每个文件都建立连接管理器。

在这个实例中,我们将某文件夹下的userinfo1.txt和userinfo2.txt的内容都写入数据表userinfo中。

步骤:

         准备工作:

                  把第一个例子中的userinfo.txt复制两份,放到同一个文件夹下。把内容改一下:

                   userinfo1.txt:3|name3|我是name3|男,4|name4|我是name4|女

                   userinfo2.txt:5|name5|我是name5|男,6|name6|我是name6|女

         设置Foreach

         (1)在控制选项卡下从左侧拖拽Foreach 循环容器。

         (2)在Foreach容器的“集合”下设置Enumerator和配置枚举器:

                  

         (3)设置枚举器映射为用户定义的变量。

         (4)将数据流任务拖拽到Foreach中。

          设置平面文件连接管理器:      

         (1)在“连接管理器”窗格中,单击 userinfo。

         (2)在“属性”窗口中,单击 “Expressions (…)”。

         (3)在 “属性”列中,选择 ConnectionString。

         (4)在“表达式”列中,单击省略号按钮“(…)”。

         (5)在“表达式生成器”对话框中,展开“变量”节点,将变量 User::varFileName 拖到“表达式”框中。

          到这就哦了。

          调试包:

          全都绿了吧!

          执行结果:

         两个文件中的数据都被插入到表userinfo中了!

  select * from userinfo

 

实例学习SSIS(三)--使用包配置

导读:

实例学习SSIS(一)--制作一个简单的ETL包

实例学习SSIS(二)--使用迭代

实例学习SSIS(三)--使用包配置

实例学习SSIS(四)--使用日志记录和错误流重定向

实例学习SSIS(五)--理论介绍SSIS

包配置是干嘛滴!

         使用包配置可以从开发环境的外部设置运行时属性和变量。

目标:

         从开发环境外部指定Foreach要遍历的文件夹,然后把该文件夹下相应的txt文件内容写入库中。

步骤:

         准备工作

         把第一个例子中的userinfo.txt复制两份,放到同一个文件夹下。把内容改一下:

                   Userinfo3.txt:7|name7|我是name7|男,8|name8|我是name8|女

                   Userinfo4.txt:9|name9|我是name9|男,10|name10|我是name10|女

         创建用户变量

         添加用户变量以便对应到文件夹名称。

         切换到“控制流”选项卡:

         将 varFolderName 变量的数据类型设置为“字符串”。

  设置Foreach容器

         将Foreach容器的Directory对应到刚才创建的变量varFolderName。

 上图中的用户变量varFolderName直接拖拽到表达式中即可!

  启用包配置

         (1)在SSIS菜单,点击“包配置”;

         (2)生成配置文件,按下图设置:

 

  配置文件设置

         修改配置文件myconfig.dtsConfig\ConfiguredValue的值,如下:

 //  myconfig.dtsConfig

 调试包:

          全都绿了就表示数据添加成功了!

 执行结果:

         文件夹D:\lyp\SQL\SSIS\package3下的userinfo3.txt和userinfo4.txt数据都被插入到表userinfo中了!

    select * from userinfo

前面的内容:

实例学习SSIS(一) 制作一个简单的ETL包

实例学习SSIS(二) 使用迭代

 

包配置是干嘛滴!

         使用包配置可以从开发环境的外部设置运行时属性和变量。

目标:

         从开发环境外部指定Foreach要遍历的文件夹,然后把该文件夹下相应的txt文件内容写入库中。

步骤:

         准备工作

         把第一个例子中的userinfo.txt复制两份,放到同一个文件夹下。把内容改一下:

                   Userinfo3.txt:7|name7|我是name7|男,8|name8|我是name8|女

                   Userinfo4.txt:9|name9|我是name9|男,10|name10|我是name10|女

         创建用户变量

         添加用户变量以便对应到文件夹名称。

         切换到“控制流”选项卡:

         将 varFolderName 变量的数据类型设置为“字符串”。

  设置Foreach容器

         将Foreach容器的Directory对应到刚才创建的变量varFolderName。

        

 上图中的用户变量varFolderName直接拖拽到表达式中即可!

  启用包配置

         (1)在SSIS菜单,点击“包配置”;

         (2)生成配置文件,按下图设置:

 

  配置文件设置

         修改配置文件myconfig.dtsConfig\ConfiguredValue的值,如下:

复制代码

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

> <? xml version="1.0" ?> < DTSConfiguration >< DTSConfigurationHeading >< DTSConfigurationFileInfo  GeneratedBy ="LIYANPING\Administrator"  GeneratedFromPackageName ="Package3"  GeneratedFromPackageID ="{DEED0EEF-48A2-4371-A1FB-C9344691989B}"  GeneratedDate ="2009-10-16 14:31:04" /></ DTSConfigurationHeading >< Configuration  ConfiguredType ="Property"  Path ="\Package.Variables[用户::varFolderName].Properties[Value]"  ValueType ="String" >
  
< ConfiguredValue > D:\lyp\SQL\SSIS\package3 </ ConfiguredValue ></ Configuration ></ DTSConfiguration >
复制代码

 

 

 调试包:

          全都绿了就表示数据添加成功了!

 执行结果:

         文件夹D:\lyp\SQL\SSIS\package3下的userinfo3.txt和userinfo4.txt数据都被插入到表userinfo中了!

    select * from userinfo

 <-->

 

实例学习SSIS(四)--使用日志记录和错误流重定向

导读:

实例学习SSIS(一)--制作一个简单的ETL包

实例学习SSIS(二)--使用迭代

实例学习SSIS(三)--使用包配置

实例学习SSIS(四)--使用日志记录和错误流重定向

实例学习SSIS(五)--理论介绍SSIS

 

 

一、使用日志记录

SSIS提供的日志记录方式:

         文本文件

         SQL Server Profiler

         Windows 事件日志

         SQL Server

         XML 文件

准备工作

使用上节的包,修改myconfig.dtsConfig,将文件夹对应到D:\lyp\SQL\SSIS\package4。

在文件夹下新建userinfo5.txt和userinfo6.txt。

         Userinfo5.txt:11|name11|我是name11|男,12|name12|我是name12|女

         Userinfo6.txt:13|name13|我是name13|男,14|name14|我是name14|女

步骤:

         1、添加一条文本日志,如下图:

        

         2、指定写入日志信息的txt文件,如下图:

         3、选择要记录的事件:

        

调试:

         在D:\lyp\SQL\SSIS\package4下创建了一个log.txt文件,可以看到里面有相应的事件执行记录。

二、使用错误流重定向

SSIS错误处理方式

在数据转换时很有可能会发生错误,SSIS对错误的处理方式:

1、选择忽略某些列中的失败;

2、重定向整个失败的行;

3、使组件失败。

默认情况下,所有组件发生错误时失败,从而导致包失败并停止后续处理。

为了不让包停止,发生错误时,通过配置来处理错误,通常是将失败的行重定向到别处进行处理。

准备工作

                   1、使用上面日志记录用到的包;

                   2、创建有错误的数据源文件userinfo7.txt(D:\lyp\SQL\SSIS\package5\)。

                            userinfo7.txt:15|name15|我是name15|男,abc|name17|我是name17|女,18|name18|我是name18|女

                            在转换idint时会出现错误。

使用组件失败的情况

                   在“数据流”中编辑“用户来源”平面文件源,在“错误输出”中将各列的“错误”选成“组件失败”:

    调试程序,可以看到“用户来源”变成了红色,整个包停止了,文件中的数据没有被成功导入到数据库中。

使用错误流重定向

         目标

                   把出错的行重定向的别的文件(errorLog.txt)而不会使包停止。

         步骤:

                   1、拖拽一个“平面文件目标”到数据流选项卡。

                   2、把“用户来源”的红箭头拖到该目标上,在弹出的“配置错误输出”中将UiD的“错误”选择为“重定向行”。

                   3、编辑“平面文件目标”:

                            新建“平面文件链接管理器”,选择错误记录文件(errorLog.txt),如下:

 

         调试:

                   调试程序,可以看到向数据库中插入了两条记录,并在errorLog.txt中写入了出错的行。

 

实例学习SSIS(五)--理论介绍SSIS

导读:

实例学习SSIS(一)--制作一个简单的ETL包

实例学习SSIS(二)--使用迭代

实例学习SSIS(三)--使用包配置

实例学习SSIS(四)--使用日志记录和错误流重定向

实例学习SSIS(五)--理论介绍SSIS

   一、概述

                   Integration Services 是用于生成高性能数据集成和工作流解决方案(包括针对数据仓库的提取、转换和加载 (ETL) 操作)的平台。

             Integration Services 包括:

                   a)生成并调试包的图形工具和向导;

                   b)执行如 FTP 操作、SQL 语句执行和电子邮件消息传递等工作流功能的任务;

                   c)用于提取和加载数据的数据源和目标;

                   d)用于清理、聚合、合并和复制数据的转换;

                   e)管理服务,即用于管理 Integration Services 包的 Integration Services 服务;

                   f)用于对 Integration Services 对象模型编程的应用程序接口 (API)。

    

   二、SSIS体系结构

         SSIS由四大部分组成:服务、对象模型、运行时和数据流。

                   下面这张大图显示了各部分之间的关系:

         服务

        在Configuration Manager中可以看到SSIS的服务:SQL Server Integration Services。

            提示:

     1、设计和执行IS包不需要启动该服务,可以使用 SQL Server 导入和导出向导、SSIS 设计器、执行包实用工具以及 dtexec 命令提示实用工具运行包。

         2、如果要通过SQL Server Management Studio监视包,则需要启动该服务。

  使用SSMS监视时,可以看到两个顶级文件夹:“正在运行的包”和“已存储的包”。

  在“正在运行的包”文件夹下可以停止某个运行的包。

         对象模型

         对象模型包括用于访问 Integration Services 工具、命令行实用工具以及自定义应用程序的本机和托管应用程序编程接口 (API)。

         工具介绍:

         Business Intelligence Development StudioBIDS

         创建和调试包。

         BIDS中的设计器

         如下图:

         命令

                   dtexec:运行现有的包;

                   如执行包:dtexec /f "c:\pkgOne.dtsx"

                   dtutil:可以对包进行访问,复制、删除、移动和 签名等;

                   如复制包:dtutil /FILE c:\myTestedPackage\package.dtsx /DestServer myserver /COPY SQL;newpackage

         运行时

                   包的运行时,为日志记录、断点、配置、连接和事务提供支持。

         数据流

         数据流任务封装数据流引擎。数据流引擎提供将数据从源移动到目标的内存中的缓冲区,并且调用从文件和关系数据库中提取数据的源。

三、典型用途

         合并来自异类数据存储区的数据

                   合并存储在不同数据存储系统中的数据,提取这些数据合并到单个一致的数据存储系统中。        

 

         填充数据仓库和数据集市

         数据仓库和数据集市中的数据具有更新频繁加载量大的特点,SSIS专门提供了一个从平面文件大容量加载到 SQL Server的任务。

         清除数据和数据标准化

         Integration Services 包含一些内置转换,可将其添加到包中以清理数据和将数据标准化、更改数据的大小写、将数据转换为不同类型或格式或者根据表达式创建新列值。

         将商业智能置入数据转换过程

         Integration Services 提供了用于将商业智能置入 SSIS 包的容器、任务和转换。

可能需要根据数据值对数据进行汇总、转换和分发,SSIS 包中的逻辑可能需要执行以下类型的任务:

a)合并来自多个数据源的数据。

b)计算数据并应用数据转换。

c)根据数据值将一个数据集拆分为多个数据集。

d)将不同的聚合应用到一个数据集的不同子集。

e)将数据的子集加载到不同目标或多个目标。

         使管理功能和数据加载自动化

管理功能自动化,例如备份和还原数据库等,可以使用 SQL Server 代理作业安排SSIS 包。

 

参考:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/extran9/html/c4398655-5657-4ae4-a690-a380790fe84f.htm  

 





 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SSIS说明 SSIS初步认识 SSIS常见组件 SSIS变量使用 SSIS开发注意 SSIS的部署 SQL创建作业 讲解内容 ETL-SSIS培训教程全文共34页,当前为第1页。 SSIS说明——什么是SSIS SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案(数据仓库的提取、转换和加载 (ETL) )的平台(农银和兴业简称为ETL)。 ETL-SSIS培训教程全文共34页,当前为第2页。 SSIS说明——功能 SQL Server Integration Services (SSIS) 提供一系列支持业务应用程序开发的内置任务、容器、转换和数据适配器。您无需编写一行代码,就可以创建 SSIS 解决方案来使用 ETL 和商业智能解决复杂的业务问题,管理 SQL Server 数据库以及在 SQL Server 实例之间复制 SQL Server 对象 ETL-SSIS培训教程全文共34页,当前为第3页。 ETL说明——特色 1、可视化环境 熟悉了SSIS的可视化操作后,给你的感觉应该是震撼的,因为几乎你所能想得到的ETL操作都能通过简单托拽控件加以实现。 2、强大的参数设置功能 SSIS的另一个特色是的参数设置功能,这一点比DTS有了明显的进步。连接参数,源与目的关联的表名或者SQL语句的条件子句,都可以通过参数来构建,甚至参数本身可以由其他参数动态赋值(通过Expression功能),这就给用户提供了非常广阔界面编程的空间,充分发挥你的想象力,就能够在可视化界面上实现复杂逻辑功能的ETL操作。 ETL-SSIS培训教程全文共34页,当前为第4页。 1、创建SSIS项目文件 (1)在开始菜单中,找到SQL数据库文件下的SQL Server Business Intelligence Development Studio程序,单击运行程序。 (2)在打开的页面中,点击左上角的"文件 新建 项目",在商业智能项目目录下选择Integration Service项目,填入名称和位置,点击确定。 SSIS初步认识 ETL-SSIS培训教程全文共34页,当前为第5页。 SSIS初步认识 2、打开现有的SSIS项目文件 找到需要打开SSIS项目的文件夹,打开文件。找到文件后缀名为.sln的文件,并运行该文件 ETL-SSIS培训教程全文共34页,当前为第6页。 SSIS初步认识 3、页面介绍 菜单栏、工具箱、设计区、连接管理器、解决方案资源管理器等 菜单栏:所有的菜单选项 工具箱:所有的组件 设计区:开发组件区域 连接管理器:当前SSIS所用到的数据源 解决方案资源管理器:可以查看数据源和项目文件 补充:整体风格和微软的C/S页面类似 ETL-SSIS培训教程全文共34页,当前为第7页。 SSIS初步认识 4、创建SSIS SSIS所有的开发都是在中完成的。 创建步骤:在右侧的解决方案资源管理器中,右键SSIS文件夹,选择新建SSIS,这样就可以开始ETLETL-SSIS培训教程全文共34页,当前为第8页。 SSIS初步认识 5、创建数据源 做数据处理,当然不能少了数据,所以还需要添加数据源。这里的数据源括数据来源和数据目标。在右侧的解决方案资源管理器中,右键数据源,选择新建数据源。 ETL-SSIS培训教程全文共34页,当前为第9页。 SSIS初步认识 6、数据源分类: 默认添加的是SQL Server数据源,提供程序选择"本机OLE DB\SQL Server Native Client10.0(SQL SERVER2008)"; Oracle数据源,我们可以选择"Oracle Provider for OLE DB"。 ETL-SSIS培训教程全文共34页,当前为第10页。 SSIS常用组件 1、执行SQL任务 执行一条或者多条SQL语句,SQL类型可以是增、删、改、查,也可以是执行一个存储过程。 补充:由于不同的数据源有不同的语法,并且SSIS对数据语言的支持度不一样,在数据库中能成功执行的SQL,在执行SQL任务不一定能正常执行。 例如:在执行SQL任务中,SQL SERVER语句支持注释(--),而在Oracle数据源下,不支持注释(--);还有调用其他数据源,需要主要用户是否有权限去操作表。 ETL-SSIS培训教程全文共34页,当前为第11页。 SSIS常用组件 2、数据流任务 数据流任务封装数据流引擎,该引擎在源和目标之间移动数据,使用户可以再移动数据时转换、清除和修改数据。将数据流任务添加到控制流使得可以提取、转换和加载数据。一个中可以有多个数据流任务,也可以含零个数据流任务ETL-SSIS培训教程全

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值