30天学通C#项目案例开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.2 使用Intergration Services在多数据库间传递数据

SQL Server Intergration Services(SSIS,中文称为SQL Server整合服务),是SQL Server 2000中所含的DTS的后续版本,它不是DTS的简单升级,而是一个完全重写了的功能更加强大的ETL工具。

ETL是Extract(提取)、Transform(转换)和Load(载入)的首字母缩写,是指在数据库环境中的从某个来源中提取数据,进行转换,再对数据库进行整合。SSIS提供了比DTS强大得多的功能。在本节将介绍开发人员比较关心的,在多数据库之间进行数据导入导出、转换功能的实现。

注意:在表一级的上下文菜单中,不会发现“导入/导出”菜单项,要使用导入/导出向导进行数据库操作,现在需要在数据库级的上下文菜单中进行操作。

要开发使用SSIS进行导入/导出的工作,必须要先Intergration Services项目,现在不能直接在SSMS中创建SSIS包,需要使用随SQL Server 2005一同安装的Business Intelligence Development Studio工具。该工具提供了与Visual Studio相同的操作体验,下面演示一下如何从Northwind数据库中导入Customers数据表。将数据记录导入到1.3.1节新建的DemoSite数据库的Customers表中,步骤如下所示。

① 打开Business Intelligence Development Studio,选择“文件”|“新建”命令,在弹出的“新建项目”窗口中选择“Intergration Services项目”,命名为CopyCustomerToWebSite。假定是将客户数据复制给一个Web站点数据库,对话框如图1.29所示。

图1.29 新建Intergration Services项目

② 单击“确定”按钮后,窗口将进入SSIS包设计视图,BIDS自动创建了一个名为Package.dtsx的包。在解决方案资源管理器中右键单击数据源节点,选择“新建数据源”菜单项,使用新建数据源向导,分别添加对Northwind数据库和DemoSite数据库的连接。

③ 右键单击控制流视图下面的连接管理器,在弹出的快捷菜单中选择“新建OLE DB连接”命令。在弹出的窗口中选择创建的数据源连接,分别为Northwind和DemoSite各建一个连接,如图1.30所示。

图1.30 新建OLE DB连接

④ 在控制流页面(可以在页面顶部的Tab导航栏中看到控制流文字),从工具箱的控制流项拖一个“执行SQL任务”项到窗口,双击该执行SQL任务项,将弹出如图1.31所示的窗口。

图1.31 编辑执行SQL任务

在属性面板的Connection属性栏,选择到DemoSite的连接,在SQLStatement栏输入Delete From Customers,先删除Customers表中的数据。在Name属性栏为该任务取一个具有描述性的名字。单击“确定”按钮完成设置。

⑤ 从工具箱的控制流项中,拖一个“数据流任务”到控制流视图中。双击该数据流任务,将切换到数据流任务面板,可以看到工具箱也发生了变换,列出了与数据流任务相关的工具。从工具箱的数据流源栏,拖一个“OLE DB源”任务项到视图,双击该任务项,将弹出如图1.32所示的窗口。

图1.32 OLE DB源编辑器

在“OLE DB连接管理器”下拉列表框中,选择到Northwind数据库的连接,在“数据访问模式”下拉列表框中,选择SQL命令,然后在“SQL命令文本”文本框中输入Select * from Customers Where City='London',将查询Northwind数据库中城市为London的客户数据。单击“确定”按钮关闭设置窗口。

⑥ 从工具箱的数据流目标栏拖一个OLE DB目标到数据流视图,首先要将OLE DB源的绿色箭头与OLE DB目标进行连接,然后双击OLE DB目标任务项,将弹出如图1.33所示的窗口。

图1.33 OLE DB目标编辑器

在目标编辑器的“OLE DB连接管理器”下拉列表框中,选择到DemoSite的连接,指定“数据访问模式”为“表或视图—快速加载”,然后选中Customers数据表,表示要将OLE DB源中的数据复制到这个目标Customers表。接下来选择映射选项,将进入编辑映射窗口,如图1.34所示。在该窗口中,指定源列与目标列之间的映射,源列中的字段值将会复制到指定的目标列中,单击“确定”按钮结束目标列编辑。

图1.34 编辑列映射

现在已经完成了SSIS包的设置工作,按F5键运行这个包,运行成功时任务项显示为绿色,并且可以在进度页面看到详细的文字信息,如图1.35所示。

图1.35 执行包效果

现在可以打开DemoSite数据库中的Customers表,可以看到数据已经被导入进来。事实上,本示例演示的步骤使用SQL Server的导入/导出向导也可以实现,但是,深入地了解SSIS的数据转换功能有助于解决一些非常复杂的业务难题。