BI实验报告.docx
《BI实验报告.docx》由会员分享,可在线阅读,更多相关《BI实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
BI实验报告
BI课程
实验报告
学号:
0841902112
姓名:
王晓郁
专业:
计算机科学与技术(08中法)
日期:
2012年5月20日
实验、QLServerBIStepbyStepSSIS3
【开发语言及实现平台或实验环境】
sqlserver2008
【实验目的】
(1)利用SSIS把SQLServer中的数据导出与导入。
(2)熟悉和掌握实验的各种操作。
(3)能够在实际的事例中灵活运用学到的有关知识。
【实验原理】
1.SQL语句查询
2.SSIS包功能
【实验要求】
(1)利用SSIS实现了数据的导入和导出,把Product表中的数据导出成Excel,然后对产品编号和名称两个字段经过派生的功能进行转换再导入到数据库中。
(2)按照实验步骤所示内容认真完成每一个步骤;
【实验步骤】
1.打开V2005,选择商业智能项目,然后选择模板中的IntegrationService项目,输入项目名称:
创建好后,就在默认的Package包中进行设计。
2.向控制流中添加一个数据流组件(DataFlowTask),双击进入数据流.从左边的工具箱中选择OLEDB数据源(OLEDBSource),可以看到,添加进去后是红色的.双击设置一下连接,如果没有已经创建的链接,则新建一个连接,选定后设置直接访问Produt表。
OK,确认了之后,发现红色的错误提示已经不存在了。
3.接下来直接再添加一个目标数据源,将数据导出成Excel数据格式,所以选择ExcelDestination,同样,双击对Excel连接管理器进行配置,配置好文件名称和路径以后(此处选择在首行显示列名,这样会从第二行开始才开始显示数据),如果文件不存在,直接选择下面的新建,创建新的Excel工作表。
4.然后从左边切换到映射,对数据流中的元数据的列和Excel表中的列进行一一映射,因为刚才是自动创建的Excel工作表,所以默认是根据名称对应的.这样我们就完成了对Product产品表的导出,在右边的解决方案中,右击执行包,可以看到绿色执行成功.
5.通过设置sql语句导出所有颜色为黑色的产品,让我们把OLEDB数据源的访问模式改成sql命令,然后输入查询语句:
SELECT*FROMProduction.Product
WHERE(Color='Black')
6.接下来,我们再将刚才导出的产品数据导入Product表中.再添加ExcelSource和OLEDBDestination,其实就是做和导出相反的过程.把ExcelSource的OLEDB连接指向Excel连接管理器。
OLEDBDestination的连接设置成OLEDBSource中的数据库连接,同样,设置成以[表或视图]的方式访问Product表,确定后发现有红色错误。
需要将rowguid字段,这两个字段都是数据库中自动生成的.
再次确认后会发现已经没有错误,只剩下了黄色的警告,现在暂时不理会这个警告。
7.把刚才生成的Excel文件删除,重新配置Excel连接管理器生成新的空Excel文件(或者把生成的Excel中的数据删除),然后再次运行包,刚才的数据导出仍然正常,数据导入显示的是没有导入任何数据,这是因为在数据中刚才的数据导出和导出并没有先后,所以他们是同步执行的,执行导入时发现里面的数据为空,所以没有导入成功任何数据.不过,尝试着把数据导入的操作直接放在ExcelDestination后面是失败的,ExcelDestination就是数据流目标,意味着整个流程的结束.(此时ExcelDestination中只可定义一个错误输出)。
8.切换到控制流,再添加一个数据流任务,将第一个数据流任何指向这个(鼠标拖拉绿色箭头):
9.双击刚添加的数据导入(已经编辑的数据流组件名称),把刚才的数据流中的组件剪切过来.清空Excel数据再次运行包,有错误,看下面的错误信息:
AnOLEDBrecordisavailable.Source:
"MicrosoftSQLNativeClient"Hresult:
0x80040E2FDescription:
"语句已终止。
".
AnOLEDBrecordisavailable.Source:
"MicrosoftSQLNativeClient"Hresult:
0x80040E2FDescription:
"不能在具有唯一索引'AK_Product_ProductNumber'的对象'Production.Product'中插入重复键的行。
".
10.暂时通过添加一次转换,在刚才的数据流源和数据流目标中间再添加一个派生列组件(DerivedColumn,Updatescolumnvaluesusingexpressions).添加一个新列NewProductNumber,在Excel中的产品编号后面加1,组成新的产品编号,同样派生出一个新的产品名称Name,因为在数据库中同样也有唯一性约束.
11.还要修改OLEDB目标中的映射,将目标列的ProductNumber对应的输入列ProductNumber改成刚才派生的NewProductNumber.将目标列的Name对应的输入列Name改成刚才派生的NewName.清空Excel数据,再次运行包,都变成了绿色,执行全部成功
12.通过对比数据库,确实已经成功的添加进了93行新的数据
【参考文献】
1、SSIS_StepV2.pdf文档
【心得体会】
1.熟悉了sqlserver2008的环境和熟练了SOL语言的使用。
2.通过实验得知,控制流中的数据导出和导入两个组件其实是前后约束条件的,也就是必须数据导出必须成功了才会执行导入(后面会介绍).另外,所谓的数据导出并不会局限于数据库的导入与导出,数据流源和数据流目标都可以是Excel,FlatFile(txt,csv),XML,DataReader等连接.也就是说同样可以实现txt导入Excel,或者是XML导入数据库等操作。