1、1概述概述9.1DTS导入导出向导导入导出向导9.22 在使用在使用SQL Server的过程中,经常需要将其他的过程中,经常需要将其他应用程序(例如应用程序(例如 Access数据库或数据库或ASCII 文本文件)文本文件)的数据移植到的数据移植到SQL Server 2000数据库中,或者将数据库中,或者将SQL Server 2000的数据移植到其他数据库中。这的数据移植到其他数据库中。这种在种在SQL Server 2000和其他应用程序之间的数据和其他应用程序之间的数据转换,就是本章中将要介绍的导入导出数据。转换,就是本章中将要介绍的导入导出数据。3n导入导出数据方法概述导入导出数据
2、方法概述 nDTS概述概述 nDTS导出向导导出向导 nDTS导入向导导入向导 4导入导入/导出数据的可以有以下几种方法导出数据的可以有以下几种方法:n使用数据转换服务(使用数据转换服务(Data Transformation Services,DTS)导入)导入/导出向导或导出向导或DTS设计器创设计器创建可用于导入建可用于导入/导出和转换数据的导出和转换数据的DTS包。包。n使用使用SQL Server复制技术在整个企业内分发数复制技术在整个企业内分发数据。据。SQL Server中的复制技术可以制作数据复中的复制技术可以制作数据复本,将这些复本移到不同位置,以及自动同步本,将这些复本移到
3、不同位置,以及自动同步数据,从而使所有复本都具有相同的数据值。数据,从而使所有复本都具有相同的数据值。可以在同一服务器或通过可以在同一服务器或通过LAN、WAN或或Internet连接的不同服务器上的数据库之间执行复制。连接的不同服务器上的数据库之间执行复制。5n使用使用bcp命令提示实用工具在命令提示实用工具在SQL Server实例和实例和数据文件之间导入和导出数据。数据文件之间导入和导出数据。n从某个从某个OLE DB提供程序中选择数据,并将数据提供程序中选择数据,并将数据从外部数据源复制到从外部数据源复制到SQL Server实例。实例。n使用分布式查询从另一个数据源中选择数据并使用分
4、布式查询从另一个数据源中选择数据并指定要插入的数据。指定要插入的数据。n使用使用INSERT语句将数据添加到现有表中。语句将数据添加到现有表中。n使用使用BULK INSERT语句将数据从数据文件导入语句将数据从数据文件导入到到SQL Server实例。实例。n使用使用SELECT INTO语句根据现有表创建新表。语句根据现有表创建新表。6n 数据源连接:包括连接到标准数据库(如数据源连接:包括连接到标准数据库(如SQL Server、Access、Oracle、dBase和和Paradox等)、等)、与与ODBC数据源的数据源的OLE DB连接、连接、Excel电子表格电子表格数据、数据、H
5、TML源以及其他源以及其他OLE DB提供程序。提供程序。n文件连接:文件连接:DTS对文本文件提供额外的支持。指对文本文件提供额外的支持。指定文本文件连接时,需要指定文件的格式。例如,定文本文件连接时,需要指定文件的格式。例如,文本文件是分隔字段格式还是固定字段格式、文文本文件是分隔字段格式还是固定字段格式、文本文件是本文件是Unicode格式还是格式还是ANSI格式、行分隔符格式、行分隔符和列分隔符、文本限定符以及第一行是否包含列和列分隔符、文本限定符以及第一行是否包含列名等。名等。n数据链接连接:在这些连接中,数据链接连接:在这些连接中,SQL Server外部外部的中间文件存储连接字符
6、串。的中间文件存储连接字符串。7n导入和导出数据导入和导出数据 n转换数据转换数据n复制数据库对象复制数据库对象n将消息发送到其他用户和包以及从其他用户和将消息发送到其他用户和包以及从其他用户和包接收消息包接收消息n对数据源执行一组对数据源执行一组Transact-SQL语句或语句或ActiveX脚本。脚本。8nDTS转换是在数据到达目的之前应用于一块数转换是在数据到达目的之前应用于一块数据的一个或多个函数或操作。源数据未改变。据的一个或多个函数或操作。源数据未改变。例如,可以从源数据的一列中析取一个子串并例如,可以从源数据的一列中析取一个子串并将其复制到目的表。这个特定的子串函数是映将其复制
7、到目的表。这个特定的子串函数是映射到源列的转换。也可以使用某些特性搜索行射到源列的转换。也可以使用某些特性搜索行并只对那些行中的数据应用函数。转换使得在并只对那些行中的数据应用函数。转换使得在导入和导出进程期间执行复杂的数据验证、数导入和导出进程期间执行复杂的数据验证、数据清理和变换更加容易。据清理和变换更加容易。9 DTS包工作流指包在执行过程中的步骤顺序,包工作流指包在执行过程中的步骤顺序,可以使用下面的方法定义包工作流:可以使用下面的方法定义包工作流:n优先约束可以根据是否执行第一个任务、执行优先约束可以根据是否执行第一个任务、执行成功或执行不成功来链接两个任务。可以使用成功或执行不成功
8、来链接两个任务。可以使用优先约束在工作流中生成条件分支。没有约束优先约束在工作流中生成条件分支。没有约束的步骤将立即执行,并且可以并行执行几个步的步骤将立即执行,并且可以并行执行几个步骤。骤。n修改工作流的修改工作流的ActiveX脚本。脚本。10 使用使用DTS导入导入/导出向导可以方便地实现数据的导出向导可以方便地实现数据的导入和导出。导入和导出。11【例【例9-1】使用】使用DTS导出向导,将导出向导,将“学生学生”表中的表中的数据导出到一个文本文件中。数据导出到一个文本文件中。12n在企业管理器中,选择菜单命令在企业管理器中,选择菜单命令“工具工具向导向导”,打开如图所示的打开如图所示
9、的“选择向导选择向导”对话框,然后选择对话框,然后选择“数据转换服务数据转换服务”项之下项之下“DTS导出向导导出向导”。13n打开打开“数据转换服务数据转换服务”向导的欢迎窗口。向导的欢迎窗口。14n打开打开“选择数据源选择数据源”窗口。数据源选择默认的窗口。数据源选择默认的“用于用于SQL Server的的Microsoft OLE DB提供程提供程序序”,数据库选择,数据库选择“学生管理学生管理”。15n打开打开“选择目的选择目的”对话框。对话框。“目的目的”选择选择“文本文本文件文件”,“文件名文件名”设置为设置为C:学生学生.txt。16n打开打开“指定表复制或查询指定表复制或查询”
10、窗口。在此窗口中,窗口。在此窗口中,用户要指定是从数据源复制一个或多个表用户要指定是从数据源复制一个或多个表/视图,视图,还是复制查询结果。还是复制查询结果。17n打开打开“选择目的文件格式选择目的文件格式”对话框。对话框。18n打开打开“保存、调度和复制包保存、调度和复制包”对话框。对话框。19n打开打开“完成导入完成导入/导出向导导出向导”对话框。在对话框。在“摘要摘要”框中列出了当前导出数据的基本情况,单击框中列出了当前导出数据的基本情况,单击“完完成成”按钮结束向导。按钮结束向导。20n因为选择了因为选择了“立即运行立即运行”选项,向导将立即运行选项,向导将立即运行DTS包,并显示运行
11、进程和结果。包,并显示运行进程和结果。21n单击单击“完成完成”按钮。打开按钮。打开C:学生学生.txt,其内容如,其内容如下:下:1,小赵小赵,False,一班一班,560,2 3,小张小张,False,三班三班,580,2 4,小李小李,True,二班二班,598,2 5,小王小王,False,一班一班,565,2 6,小马小马,True,二班二班,602,3 7,小周小周,False,一班一班,540,3 8,小郭小郭,True,二班二班,552,3 9,小吴小吴,False,一班一班,577,3 10,小孙小孙,True,二班二班,599,3 22n使用使用DTS导出向导,将导出向导,
12、将“学生学生”表中的数据导出表中的数据导出到到Access数据库中。数据库中。23n参照例参照例9-1的步骤(的步骤(1)(3)进行操作,过程完)进行操作,过程完全相同。全相同。24n在选择目的对话框中,在在选择目的对话框中,在“目的目的”组合框中选择组合框中选择Microsoft Access。输入。输入Access数据库文件名,例数据库文件名,例如如C:学生管理。如果存在用户名和密码,也一学生管理。如果存在用户名和密码,也一并输入。并输入。25n打开打开“指定表复制或查询指定表复制或查询”对话框(参照例对话框(参照例9-1的步骤的步骤5),选择选择“从源数据库复制表和视图从源数据库复制表和
13、视图”。n单击单击“下一步下一步”按钮。按钮。26n打开打开“选择源表和视图选择源表和视图”对话框,源数据选择对话框,源数据选择“学生管理学生管理.dbo.学生学生”,下面的步骤与例下面的步骤与例9-1相似相似27n可以使用可以使用DTS导入导入/导出向导向导出向导向SQL Server数据库数据库中导入数据。中导入数据。n【例【例9-3】使用】使用DTS导入向导,将导入向导,将“C:学生学生.txt”文件中的数据导入到文件中的数据导入到“学生管理学生管理”数据库中。数据库中。28n在企业管理器中,选择菜单命令在企业管理器中,选择菜单命令“工具工具向导向导”,打开打开“选择向导选择向导”对话框
14、,然后选择对话框,然后选择“数据转换数据转换服务服务”项之下项之下“DTS导入向导导入向导”。29n打开打开“数据转换服务数据转换服务”向导的欢迎窗口。向导的欢迎窗口。30n打开打开“选择数据源选择数据源”对话框,选择数据源为对话框,选择数据源为“文文本文件本文件”,指定,指定“文件名文件名”为为“C:学生学生.txt”。31n打开打开“选择文件格式选择文件格式”对话框,这里需要根据导对话框,这里需要根据导出数据时的格式设置。如果导出数据时采用的是出数据时的格式设置。如果导出数据时采用的是默认设置,则导入数据时也不需要做特殊设置。默认设置,则导入数据时也不需要做特殊设置。32n打开打开“指定列
15、分隔符指定列分隔符”对话框。在此对话框中,对话框。在此对话框中,用户可以根据指定的分隔符查看预览效果,用户可以根据指定的分隔符查看预览效果,33n打开打开“选择目的选择目的”对话框。对话框。“目的目的”选择默认的选择默认的“用于用于SQL Server的的Microsoft OLE DB提供程提供程序序”,服务器选择,服务器选择“LEE”,并指定,并指定“使用使用Windows身份验证身份验证”,数据库选择,数据库选择“学生管理学生管理“34n打开打开“选择源表和视图选择源表和视图”对话框。默认的目的表对话框。默认的目的表为为“学生管理学生管理.dbo.student”。单击表名后面。单击表名
16、后面的的“转换转换”按钮,打开按钮,打开“列映射和转换列映射和转换”对话框,对话框,可以设置目的表的列名、列属性以及数据源和目可以设置目的表的列名、列属性以及数据源和目的列的对应关系。的列的对应关系。35n打开打开“保存、调度和复制包保存、调度和复制包”对话框对话框36n打开打开“完成导入完成导入/导出向导导出向导”对话框。在对话框。在“摘要摘要”框中列出了当前导入数据的基本情况,单击框中列出了当前导入数据的基本情况,单击“完完成成”按钮结束向导。按钮结束向导。37可以看到可以看到,如果在向导中指定的目的表在数据库中不存在,则如果在向导中指定的目的表在数据库中不存在,则导入数据后将创建此表。如
17、果不特殊指定,向导会将每个列导入数据后将创建此表。如果不特殊指定,向导会将每个列的数据类型都设置成的数据类型都设置成varchar,列名从,列名从Col001开始顺序递增。开始顺序递增。38n使用使用DTS导入向导,将导入向导,将Access数据库数据库“学生学生”表表中的数据导入到中的数据导入到SQL Server。39n参照例参照例9-3的步骤(的步骤(1)()(2)进行操作,过程)进行操作,过程完全相同。完全相同。n在欢迎窗口中单击在欢迎窗口中单击“下一步下一步”按钮按钮40n打开打开“选择数据源选择数据源”对话框。在选择数据源对话对话框。在选择数据源对话框的框的“数据源数据源”下拉列表
18、中选择下拉列表中选择Microsoft Access,然后输入然后输入Access数据库文件名,例如,数据库文件名,例如,C:学生管学生管理,如果存在用户名和密码,也一并输入。理,如果存在用户名和密码,也一并输入。41n打开打开“选择目的选择目的”对话框。选择对话框。选择SQL Server数据数据库服务器(这里为库服务器(这里为“LEE”),指定),指定“使用使用Windows身份验证身份验证”,然后选择数据库,然后选择数据库“学生管学生管理理”,42n打开打开“指定表复制或查询指定表复制或查询”对话框。在此窗口中,对话框。在此窗口中,用户要指定是从数据源复制一个或多个表用户要指定是从数据源复制一个或多个表/视图,视图,还是复制查询结果。还是复制查询结果。43n打开打开“选择源表和视图选择源表和视图”对话框,源数据选择对话框,源数据选择“学生学生”,目的数据选择,目的数据选择“学生管学生管理理.dbo.student1”,44n下面的步骤与例下面的步骤与例9-3相似。相似。45