资源描述:
《sql server bi step by step 2》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、SQLServerBIStepbyStep2 本文示例源代码或素材下载 让我们首先开始学习SSIS吧,利用SSIS把SQLServer中的数据导出.首先,打开Vs.2005,选择商业智能项目,然后选择模板中的IntegrationService项目,输入项目名称: 创建好后,我们就在默认的Package包中进行设计(关于一些概念性的就不介绍了,请参照这个文章,或者是其它的教程或者书籍).首先向控制流中添加一个数据流组件(DataFlo Production.ProductWHERE (Color='Bl
2、ack') 再次执行时就会发现生成的Excel表中已经只包含了Color=Black的数据(注意,如果你刚才所有的数据的Excel文件没有删除,你会发现这 次导出的数据是添加到了上次的数据的后面). 接下来,我们再将刚才导出的产品数据导入Product表中.再添加ExcelSource和OLEDBDestination,其实就是做和导出相反的过程.把 ExcelSource的OLEDB连接指向Excel连接管理器(刚才导出中ExcelDestination中设置的,在下面连接管理器中会列出来), OLEDBDest
3、ination的连接设置成OLEDBSource中的数据库连接,同样,设置成以[表或视图]的方式访问Product表,确定后发现有红色错误 提示,这是因为数据库中Product产品是以ProductID作为主键标识的,所以不能够插入,我们从映射中设置将ProdutID字段删除, 同样的,我们需要将rowguid字段,这两个字段都是数据库中自动生成的. 再次确认后会发现已经没有错误,只剩下了黄色的警告,我们现在暂时不理会这个警告.我们把刚才生成的Excel文件删除,重新配置Excel连接管理器生成新的空Excel文件(或
4、者把生成的Excel中的数据删除),然后再次运行包,你会发现,刚才的数据导出仍然正常,但是数据导入却显示的是没有导入任何数据,这是因为在数据中刚才的数据导出和导出并没有先后,所以他们是同步执行的,执行导入时发现里面的数据为空,所以没有导入成功任何数据.不过,尝试着把数据导入的操作直接放在ExcelDestination后面是失败的,ExcelDestination就是数据流目标,意味着整个流程的结束.(此时ExcelDestination中只可定义一个错误输出). 我们切换到控制流,再添加一个数据流任务,将第一个数据流任何指向这
5、个(鼠标拖拉绿色箭头):12下一页>>>>这篇文章来自..,。 双击刚添加的数据导入(已经编辑的数据流组件名称),把刚才的数据流中的组件剪切过来.清空Excel数据再次运行包,怎么还是有错误,这是为什么呢?,呵呵,看下面的错误信息: AnOLEDBrecordisavailable. Source:MicrosoftSQLNativeClient Hresult:0x80040E2F Description:语句已终止。. AnOLEDBrecordisavailable. Source:MicrosoftSQLNative
6、Client Hresult:0x80040E2F Description:不能在具有唯一索引'AK_Product_ProductNumber'的对象'Production.Product'中插入重复键的行。. 其实产品编号ProductNumber也是主键,呵呵,这个问题是在运行前SSIS没有提示的.怎么办呢?为了达到目的,我们暂时通过添加一次转换,在刚才的数据流源和数据流目标中间再添加一个派生列组件(DerivedColumn,Updatescolumnvaluesusingexpressi
7、ons).添加一个新列Neber,在Excel中的产品编号后面加1,组成新的产品编号,同样我们派生出一个新的产品名称Name,因为在数据库中同样也有唯一性约束. 同时,我们还要修改OLEDB目标中的映射,将目标列的ProductNumber对应的输入列ProductNumber改成刚才派生的Neber.将目标列的Name对应的输入列Name改成刚才派生的Nee.清空Excel数据,再次运行包,都变成了绿色,执行全部成功 通过对比数据库,确实已经成功的添加进了93行新的数据. 细心的可能会发现,控制流中的数据导出和导入两个组件
8、其实是前后约束条件的,也就是必须数据导出必须成功了才会执行导入(后面会介绍).另外,所谓的数据导出并不会局限于数据库的导入和导出,数据流源和数据流目标都可以是Excel,FlatFile(txt,csv),XML,DataReader等连接.也就是