[计算机软件及应用]SSIS Integration Service.doc
《[计算机软件及应用]SSIS Integration Service.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]SSIS Integration Service.doc(70页珍藏版)》请在三一办公上搜索。
1、SSIS Integration Service1. 准备 1) SQL Server 2005 和2008提供了很多新的和增强的商务智能功能,包括利用集成服务(SSIS)整合多种数据源;利用分析服务(SSAS)使数据内容更丰富并且建立复杂的商业分析; 以及利用报表服务(SSRS)编辑,管理,和提交丰富的报表. 如果你现在还不清楚这些功能,那么接下来一系列的介绍会让你对SQL Server现在的商务智能支持大吃一惊.不过现在关于SQL Server商务智能(SQL Server Business Intelligence - BI)的中文资料相对较少,很多时间对于一些复杂问题的研究,都需要直接
2、搜索英文资料或者是直接去国外的社区求教.从本文开始,我将以现在掌握的相关知识为基础,介绍SQL Server BI,希望和这方面的朋友一过研究和提高.让我们先做一下前期的准备工作,整个案例都会以AdventureWorks数据库为基础,如果你在安装SQL Server时没有选择安装,也可以单独下载, Server的很多例子,工具和资源,如果你有BI方面的基础,建议直接从上面下载例子进行研究. AdventureWorks数据库及示例的安装可以参照2) 如果你对AdventureWorks数据库并不熟悉,请先通过以下资源进行了解: 3) SQL Server 2005 AdventureWork
3、s 数据字典4) SQL Server 2008 AdventureWorks 数据字典5) 介绍AdventureWorks 数据库的webcast6) 在安装SQL Server时,请选择安装Integration Service,Reporting Service,Analysis Service等服务,并且选中开发工具.安装完成后,就可以用vs .net打开BI项目:7) SSIS项目:8) 9) SSAS项目:10)11) SSRS项目:12)13) 可以看到,微软已经给出BI的一整套解决方案,而且他们之间可以互操作,Reporting Service可以根据SSAS生成的多维数据集
4、生成复杂的KPI报表,Integration Service也可以在控制流中调用SSAS进行数据分析,另外Sql Server BI还能够和微软的其它产品整合,比如Reporting Service直接整合到MOSS中,可以安装插件,在Excel中直接操作SSAS分析出来的数据,使客户端更加方便的操作.这些我们在后面都会一一介绍.14) 最后,和大家分享一下我经常去的Sql server 相关的网站:15) http:/www.ssas- analysis service 的技术网站 专注于 integration service 的网站 sql server 相关的技术文章和视频 同上 比较
5、多的 sql server相关的视频教程(短教程) 16) 微软社区,当然,你有什么问题都可以在这里提出来,肯定会有人帮你解决17) 另外,还下载到了Server 2008 step by step BI系列课程 手头上还有一些其它的视频以及电子书等资料,有兴趣的朋友可以直接联系我索取,先休息了,接下来我们再循序渐进2. 使用SSIS进行简单的数据导入导出 1) 让我们首先开始学习SSIS吧,利用SSIS把SQL Server中的数据导出.首先,打开V 2005,选择商业智能项目,然后选择模板中的Integration Service项目,输入项目名称:2) 3) 创建好后,我们就在默认的Pa
6、ckage包中进行设计(关于一些概念性的就不介绍了,请参照这个文章, 或者是其它的教程或者书籍).首先向控制流中添加一个数据流组件(Data Flow Task),双击进入数据流.从左边的工具箱中选择OLEDB数据源(OLE DB Source),可以看到,添加进去后是红色的.双击设置一下连接,如果没有已经创建的链接,则新建一个连接,选定后设置直接访问Produt表,当然在这里也可以通过sql语句获取数据源,其中可以调用存储过程,另外还可以通过变量设置的方式,可以把表或者视图的名称,或者sql命令直接放在变量中.4) 5) OK,确认了之后,发现红色的错误提示已经不存在了.接下来,我们直接再添
7、加一个目标数据源,我们将数据导出成Excel数据格式,所以选择Excel Destination,同样,双击对Excel连接管理器进行配置,配置好文件名称和路径以后(此处选择在首行显示列名,这样会从第二行开始才开始显示数据),如果文件不存在,直接选择下面的新建,创建新的Excel工作表.6)7) 然后从左边切换到映射,对数据流中的元数据的列和Excel表中的列进行一一映射,因为刚才是自动创建的Excel工作表,所以默认是根据名称对应的.这样我们就完成了对Product产品表的导出,在右边的解决方案中,右击执行包,可以看到绿色执行成功.8) 打开刚才指定的路径中的Excel文件,已经包含了导出的
8、数据.是不是比手工写C#代码实现数据库数据导出到Excel文件方便了很多?呵呵,这还只是最基础的功能.我们通过设置sql语句导出所有颜色为黑色的产品,让我们把OLEDB数据源的访问模式改成sql命令,然后输入查询语句:SELECT * FROM Production.ProductWHERE (Color = Black)9) 再次执行时就会发现生成的Excel表中已经只包含了Color=Black的数据(注意,如果你刚才所有的数据的Excel文件没有删除,你会发现这次导出的数据是添加到了上次的数据的后面).10) 接下来,我们再将刚才导出的产品数据导入Product表中.再添加Excel S
9、ource和OLE DB Destination,其实就是做和导出相反的过程.把Excel Source的OLEDB连接指向Excel连接管理器(刚才导出中Excel Destination中设置的,在下面连接管理器中会列出来),OLE DB Destination的连接设置成OLE DB Source中的数据库连接,同样,设置成以表或视图的方式访问Product表,确定后发现有红色错误提示,这是因为数据库中Product产品是以ProductID作为主键标识的,所以不能够插入,我们从映射中设置将ProdutID字段删除,同样的,我们需要将rowguid字段,这两个字段都是数据库中自动生成的.
10、 11) 12) 再次确认后会发现已经没有错误,只剩下了黄色的警告,我们现在暂时不理会这个警告.我们把刚才生成的Excel文件删除,重新配置Excel连接管理器生成新的空Excel文件(或者把生成的Excel中的数据删除),然后再次运行包,你会发现,刚才的数据导出仍然正常,但是数据导入却显示的是没有导入任何数据,这是因为在数据中刚才的数据导出和导出并没有先后,所以他们是同步执行的,执行导入时发现里面的数据为空,所以没有导入成功任何数据.不过,尝试着把数据导入的操作直接放在Excel Destination后面是失败的,Excel Destination就是数据流目标,意味着整个流程的结束.(此
11、时Excel Destination中只可定义一个错误输出). 我们切换到控制流,再添加一个数据流任务,将第一个数据流任何指向这个(鼠标拖拉绿色箭头): 13) 双击刚添加的数据导入(已经编辑的数据流组件名称),把刚才的数据流中的组件剪切过来.清空Excel数据再次运行包,怎么还是有错误,”这是为什么呢?” ,呵呵,看下面的错误信息:14) An OLE DB record is available.Source: Microsoft SQL Native Client Hresult: 0x80040E2F Description: 语句已终止。. An OLE DB record is a
12、vailable. Source: Microsoft SQL Native Client Hresult: 0x80040E2F Description: 不能在具有唯一索引 AK_Product_ProductNumber 的对象 Production.Product 中插入重复键的行。.15) 其实产品编号ProductNumber也是主键,呵呵,这个问题是在运行前SSIS没有提示的.怎么办呢?为了达到目的,我们暂时通过添加一次转换,在刚才的数据流源和数据流目标中间再添加一个派生列组件(Derived Column ,Updates column values using express
13、ions).添加一个新列NewProductNumber,在Excel中的产品编号后面加1,组成新的产品编号,同样我们派生出一个新的产品名称Name,因为在数据库中同样也有唯一性约束. 16) 同时,我们还要修改OLE DB目标中的映射,将目标列的ProductNumber对应的输入列ProductNumber改成刚才派生的NewProductNumber.将目标列的Name对应的输入列Name改成刚才派生的NewName.清空Excel数据,再次运行包,都变成了绿色,执行全部成功 17) 通过对比数据库,确实已经成功的添加进了93行新的数据. 细心的可能会发现,控制流中的数据导出和导入两个组
14、件其实是前后约束条件的,也就是必须数据导出必须成功了才会执行导入(后面会介绍).另外,所谓的数据导出并不会局限于数据库的导入和导出,数据流源和数据流目标都可以是Excel,Flat File(txt,csv),XML,DataReader等连接.也就是说同样可以实现txt导入Excel,或者是XML导入数据库等操作. 好了,今天是SSIS的一个入门,我们利用SSIS实现了数据的导入和导出,把Product表中的数据导出成Excel,然后对产品编号和名称两个字段经过派生的功能进行转换再导入到数据库中,这其中我们认识了控制流和数据流,数据流源和数据流目标,并且还引入了派生列组件来实现我们的导入(这
15、里主要是为了实现导入,有可能是正好产品名称相对1这个字符导致错误)3. 批量导入Excel表1) 上一次我们已经介绍了简单的数据导出和导入,但是只是对单一文件进行操作,如果我们想同时对一个目录下面的所有的文件执行数据导入怎么实现呢?相当简单,SSIS在控制流中提供了Foreach循环容器,很容易理解,它和序列容器相比就是能够循环的遍历执行,能够对指定枚举器的每个成员重复执行控制流:2) 可以看到,Foreach循环窗器遍历文件夹可以通过一些设置或者是正则来匹配,使用 Foreach 循环容器,可以枚举: ADO 记录集行和架构信息 文件和目录结构 系统、包和用户变量 SQL 管理对象 (SMO
16、)3) 首先我们准备一下数据,把上次生成的Excel文件重命名为Product1.xls,新建一个Product2.xls,复制Product1.xls中的ProductID800的行到新建的Product2.xls中(注意两个Excel的Sheet名字一致),然后在我们的SSIS项目中新建一个ForeachInput包,Foreach 循环容器容器进来,双击进行集合设置,在文件夹处指定我们Excel文件所在的文件路径,比如F: ,文件名处写*.xls,这样就能够匹配出所有的后缀名为xls的文件,然后单独执行容器里面的流程,不过在我们的容器中需要去访问每一个Excel文件,我们必须获得每一个枚
17、举变量也就是文件的名称,可以通过设置变量映射实现.4) 如上图,新建变量后,每次找到一个与条件相匹配的文件时,Foreach 循环容器就会将用该文件名填充用户定义的变量.同理,当我们遍历其它对象时,也可以采用变量的方式进行映射,获得遍历到的单个匹配对象. 然后我们直接把上一次建的包(OutputAndInput.dtsx)中的数据导入这个数据流组件复制到Foreach 循环容器中(就象复制普通文件一样,呵呵),同样也把连接管理器中的Excel文件连接和数据库连接复制过来.这样我们基本上已经完成了,只不过现在的Excel文件连接还是指定文件,我们只需要和我们的变量currentFilePath绑
18、定上就行了.点击我们的Excel文件连接,在右边的属性中点击Expressions. 5) 在属性表达式编辑器里,我们可以对Excel文件连接的所有的属性的值直接用表达式绑定,不仅是Excel文件连接,象普通文件连接,数据库连接,FTP连接同样可以.这无疑提高了灵活性.在这里,我们仅需要绑定其文件路径,在属性里选择ExcelFilePath,然后点击表达式后面的省略号按钮. 6) 这里不仅可以直接绑定系统变量和用户变量,而且可以使用脚本组合成表达式.我们只需要选定用户变量currentFilePath.点击计算表达式,只是一个空的字符串,因为此时并没有进行遍历.所以点击后发现Excel Sou
19、rce数据流源组件显示红色的,提示文件并不存在,我们不需要此时对文件进行检测,所以将Excel文件连接的延迟验证DelayValidation属性值设置成True. 我们为了防止和数据库里面已经有的数据发生冲突,修改派生列组件,因为上一次我们是ProductNumber和Name加了1,这次我们加2. 7) 然后右击包执行,你会发现执行成功,而且是执行了两次数据流(有可能很快看不出来),可以通过对比数据库看出来,已经添加进了两个Excel表里的数据.当然,你可以分成更多个Excel,多少个都没有关系. 8) 此处,你也可以通过添加数据查看器进行查看执行过程中的数据,这样可以很方便的进行SSIS
20、包的简单的调试.右击派生列组件和Product目标表中间的绿色,点击数据查看器,然后点击添加,再选择网络,其它全部默认,确定. 9) 我们把派生列中改成+3”时再次运行包,你会发现所有的组件都是黄包,这代表正在执行,在弹出来的数据查看器中可以看到所有的数据流的55行数据,点击上面的绿色按钮可以继续运行.通过数据查看器我们可以查看正在数据流中传输的数据.10) 我们在上面的数据查看器中就可以看到新增加的NewProductNumber和NewName两个列是否正确. 到现在我们就已经完成了批量导入Excel,本次我们主要学习了Foreach循环容器,并且配合用户变量的使用,以及在使用连接器中的连
21、接的一些简单设置,比如属性动态绑定表达式等,另外还介绍了数据查看器的用法4. 合并数据11) 我们已经实现了把Excel中的数据导入到数据流目标,也就是数据库中,但是我们只是模拟了不重复的数据,也就是都是数据库中此时不存在的数据.那么如果数据流源Excel中的数据和数据库中的数据的主键相同的情况下,再进行插入操作就会出现异常,怎么才能实现自动的更新操作呢?也就是自动的判断数据源的数据,如果数据库中存在就执行更新,不存在就执行插入呢? 可能叫做合并数据会有些误解,这里的合并数据与数据流中的Merge组件和Merge Join组件直接实现的效果是有差别的,首先我们看看这两个组件. 我们新建一个包,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件及应用SSIS Integration Service 计算机软件 应用 SSIS

文档标签
- 计算机软件及应用SKETCHUP
- 计算机软件及应用
- 计算机软件及应用CAXA上机指导
- 计算机软件及应用Mathematica
- 计算机软件及应用Jaa
- 计算机软件及应用Lifekeeper
- 计算机软件及应用DELPHI
- 计算机软件及应用SSIS
- 计算机软件及应用Primavera
- 计算机软件及应用ZigBee协议栈TI
- 计算机软件及应用图像预处理技术概述
- 计算机软件及应用安卓经典游戏推荐
- 计算机软件及应用A3Windows
- 计算机软件及应用Oracle
- 计算机软件及应用第2章
- 计算机软件及应用PGP教程
- 计算机软件及应用热泵运行规程第一版
- 计算机软件及应用CorelDRAW
- 计算机软件可靠性和可维护性管理
- 计算机软件及应用ESRI软件介绍
链接地址:https://www.31ppt.com/p-4561671.html