第14章数据转换.docx
《第14章数据转换.docx》由会员分享,可在线阅读,更多相关《第14章数据转换.docx(12页珍藏版)》请在冰豆网上搜索。
![第14章数据转换.docx](https://file1.bdocx.com/fileroot1/2022-12/7/d6a61325-8257-44fe-8821-a62a1a3304c8/d6a61325-8257-44fe-8821-a62a1a3304c81.gif)
第14章数据转换
第14章数据转换
用户在接触SQLServer之前,也许已经使用过其他的数据库管理系统,如Sysbase、Oracle、DB2或Access等。
用户可能希望将自己存储在别的数据库管理系统中的数据转换到SQLServer的数据库中,同样,也许因为某些特殊的需要,用户希望将自己存储在SQLServer数据库中的数据转换到别的数据库管理系统中。
SQLServer为了满足用户的这种需求提供了数据转换服务(DTS)。
利用这种服务,用户可以将数据在不同的数据源之间进行导入和导出。
14.1DTS的基本概念
DTS包含一套用于创建、调度和执行DTS包的工具,如表14.1所示,不同的工具适用于不同的情况。
表14.1DTS提供的传输数据的工具
工具
说明
DTS导入/导出向导
此向导用于将数据复制到SQLServer实例和从此类实例中复制数据,以及将转换映射到数据。
DTS设计器
此图形工具用于生成带有工作流和事件驱动逻辑的复杂包。
也可以使用DTS设计器编辑和自定义用DTS导入/导出向导创建的包。
DTS和SQLServer企业管理器
这些选项可用于从SQLServer企业管理器中操作包和访问包信息。
DTS查询设计器
此图形工具用于在DTS中生成查询。
归纳起来,SQLServer2000提供的DTS工具具有如下功能:
∙数据的导入和导出导入和导出数据是在不同应用之间按普通格式读写数据从而实现数据交换的过程。
例如,DTS可以从一个Excel格式的文件或Access数据库中读出数据并导入到SQLServer数据库中。
同样,也可以将数据从SQLServer数据库中导出并输入到另一个数据源中。
∙转换数据格式SQLServer允许将数据在实现数据传输之前进行数据格式的转换。
例如,可以根据源数据中的一列或多列数据进行重新统计计算,甚至可以将一列数据分割成多列存储在目的数据源的不同列上。
通过转换数据格式,用户可以方便地实施复杂的数据检验,进行数据的重新组织,如排序、分组等,还可以提高导入、导出数据的效率。
∙传输数据库对象在不同的数据源之间,DTS只能移动表和表中的数据。
但如果是在SQLServer数据库之间进行传输,则可以方便地实现索引、视图、账户、存储过程、触发器、规则、约束等数据库对象的传递。
14.2数据的导入
利用DTS向导可以从SQLServer或别的数据源中将数据导入SQLServer,并实现数据格式的转换。
【例14.1】新建一个school1数据库,使用DTS将school数据库中的四个数据表(student、teacher、course和score表)导入到school1中的具体步骤如下:
(1)在企业管理器中选择要导入数据的SQLServer服务器,这里为NO1,从“工具”菜单中选择“数据转换服务”命令,从出现的子选单中选择“导入数据”命令,如图14.1所示。
(2)系统出现如图14.2所示的DTS导入/导出向导功能说明对话框,单击“下一步”按钮,进入如图14.3所示的数据转换服务的选择数据源对话框。
(3)在如图14.3所示的对话框中,从服务器下拉列表中选择“NO1”,选中“使用SQLServer身份验证”,在用户名框中输入“sa”,单击“刷新”按钮,再从数据库下拉列表中选择“school”。
(4)单击“下一步”按钮,出现如图14.4所示的对话框中,要求选择目的。
从服务器下拉列表中选择“NO1”,选中“使用SQLServer身份验证”,在用户名框中输入“sa”,单击“刷新”按钮,再从数据库下拉列表中选择“school1”。
图14.1“数据转换服务”菜单
图14.2DTS导入/导出向导功能说明对话框
图14.3选择数据源对话框
(5)单击“下一步”按钮,系统弹出如图14.5所示的指定表复制或查询对话框,可以选择直接传输表格数据还是利用T-SQL语句来定义要传输的数据。
如果是在两个SQLServer数据库之间进行数据的传输,还可以选择传输的数据库对象。
这里选中“从源数据库复制表和视图”项。
(6)单击“下一步”按钮,出现如图14.6所示的选择源表和视图对话框。
这里从school数据库中选择要复制的student、teacher、course和score表。
图14.4选择目的对话框
图14.5指定表复制或查询对话框
图14.6选择源表和视图对话框
(7)单击“下一步”按钮,出现如图14.7所示的选择运行方式和存储方式对话框。
当完成上述操作以后,SQLServer将会自动创建一个DTS包,该包中容纳将要执行的DTS操作,可以选择立即执行该DTS包,或者设置一个时间表来执行DTS包。
这里选择“立即运行”选项,不选中“保存DTS包”复选框。
(8)单击“下一步”按钮,出现如图14.8所示的转换信息显示对话框。
(9)单击“下一步”按钮,出现如图14.9所示的执行DTS操作对话框。
执行结束后,单击“完成”按钮返回。
完成上述操作以后,就可以从企业管理器中的数据库school1里看到转移过来的表,如图14.10所示。
图14.7选择运行方式和存储方式对话框
图14.8转换信息显示对话框
图14.9执行DTS操作对话框
图14.10转换到school1数据库中的表
14.3数据的导出
使用数据导出向导的方法与使用数据导入向导的方法完全一样,这里不再叙述。
下面通过一个简单的例子介绍利用DTS设计器导出数据的方法。
【例14.2】在本例中要完成的功能包括以下两点:
(1)从本地服务器的school数据库中查询出student表中所有95031班的基本信息。
(2)将这些信息导出,并传输到本地服务器的school1数据库的student表(假设该表已存在,并先删除其中的全部数据)中。
使用DTS设计器的操作步骤如下:
(1)在服务器NO1下的“数据转换服务”图标上右击鼠标,从出现的快捷选单中选择“新建包”命令,如图14.11所示,系统进入如图14.12所示的DTS设计器界面。
图14.11“数据转换服务”菜单
图14.12DTS设计器界面
(2)单击图14.12左边的“连接”菜单,在出现的菜单中选择第一个命令(MicrosoftOLEDBProviderforSQLServer),出现“连接属性”对话框,如图14.13所示。
从服务器下拉列表中选择“NO1”,选中“使用SQLServer身份验证”,在用户名框中输入“sa”,单击“刷新”按钮,再从数据库下拉列表中选择“school”。
单击“确定”按钮返回,此时的DTS设计器界面中出现一个连接,如图14.14所示。
图14.13“连接属性”对话框
图14.14DTS设计器界面(有一个连接)
(3)再单击图14.14左边的“连接”菜单,在出现的菜单中选择第一个命令(MicrosoftOLEDBProviderforSQLServer),出现“连接属性”对话框,如图14.15所示。
从服务器下拉列表中选择“NO1”,选中“使用SQLServer身份验证”,在用户名框中输入“sa”,单击“刷新”按钮,再从数据库下拉列表中选择“school1”。
单击“确定”按钮返回,此时的DTS设计器界面中出现两个连接,如图14.16所示。
图14.15“连接属性”对话框
图14.16DTS设计器界面(有两个连接)
(4)在图14.16中,从“任务”菜单中选择“转换数据任务”,此时需要确定源连接和目标连接。
按先后次序选中两个连接的图标,首先选中的是源连接,第二次选中的是目标连接。
选中连接后在源连接和目标连接之间会出现一条表示数据传输的箭头,从源连接指向目标连接。
如图14.17所示。
(5)选中表示数据传输任务的箭头,右击鼠标,从出现的快捷选单中选择“属性”命令。
打开“转换数据任务属性”对话框。
该对话框中有5个选项卡,可以从“源”选项卡上定义在源连接指向数据库上将要执行的操作。
本例要从school数据库的student表中查询出所有95031班的学生信息,所以应独立编写SQL语句,如图14.18所示。
图14.17DTS设计器界面及确定源连接和目标连接
图14.18定义在源连接上要进行的操作
(6)在“目的”选项卡中,选择在目的连接上将要连接的表名。
本例假设在目标数据源上已有对应的空表student。
定义在目标连接上要进行的操作如图14.19所示。
(7)在“转换”选项卡中,定义源表和目的表之间的对应关系,选择“全选”按钮,如图14.20所示。
(8)单击“确定”完成任务的定义,返回到图14.17,选择“包”菜单的“保存”命令,将其保存到“Student包”中,以便以后使用,如图14.21所示。
(9)在企业管理器中,选择“数据转换服务”下的“本地包”,出现如图14.22所示界面,右边列出了“本地包”包含的DTS包,这里为Student包。
图14.19定义在目标连接上要进行的操作
图14.20定义源与目的之间的转换
图14.21“保存DTS包”对话框
图14.22“本地包”包含的DTS包
(10)右击“Student包”,在出现的快捷菜单中选择“选择包”命令,就可以执行这个DTS包,执行结果如图14.23所示,从图上可以看到共有3行数据从源表中输出到目的表中。
图14.23执行DTS包
此时,打开school1数据库中的student表,其中包含有95031班的3个学生记录。
练习题14
1.何为DTS包?
2.DTS工具具有哪些功能?
3.DTS允许哪些连接?
上机实验题13
新建一个数据库factory1,使用DTS向导将前面已建的factory数据库中的所有表导入到factory1数据库中。
要求不立即运行,而是创建一个factory包,以便以后运行。