1
第 十三 章 SQL Server 数据转换
? 数据的导入
? 数据的导出
2
数据转换服务基本概念
? 数据转换服务简介, 为了支持企业决策, 许多
组织都需将数据集中起来进行分析 。 但是通常
数据总是以不同的格式, 存储在不同的地方,
有的可能是文本文件, 有的虽然具有表结构但
不属于同一种数据源 。 这些情况极大地妨碍数
据的集中处理, SQL Server 提供了令人欣慰
的组件, 即 ( Data Transformation Services)
DTS。 DTS 本身包含多个工具, 并提供了接
口来实现在任何支持 OLE DB 的数据源间导入,
导出或传递数据, 并使这一工作变得简单, 高
效 。 这意味着不仅可以在 SQL Server 数据源
间进行数据的转储, 而且可以把 Sybase、
Oracle,Informix下的数据传递到 SQL Server。
3
? 利用 DTS 可能在任何 OLE DB,ODBC 驱
动程序的数据源或文本文件和 SQL
Server 之间导入导出或传递数据具体表
现在,
? 数据的导入导出服务, 通过读写数据在不
同应用程序间交换数据 。 例如可将文本文
件或 Microsoft Access数据库导入到 SQL
Server, 也可以把数据从 SQL Server 导
出到任何 OLE DB 数据源 。
4
? 转换数据, 所谓传递是指在数据未到达目
标数据源前而对数据采取的系列操作 。 比
如 DTS 允许从源数据源的一列或多列计
算出新的列值, 然后将其存储在目标数据
库中 。
? 传递数据库对象, 在异构数据源情况下,
DTS 的内置工具只能在数据源间传递表
定义和数据 。 如果要传递其它数据库对象,
如索引, 约束, 视图时, 必须定义一个任
务, 从而在目标数据库上执行那些包含在
任务中的 SQL 语句, SQL 语句是被用来
创建这些数据库对象的 。
5
DTS 结构
? DTS 将数据导入, 导出或传递定义成可存储的
对象, 即包裹或称为包, 每一个包都是包括一
个或具有一定顺序的多个任务的工作流, 每个
任务可以将数据从某一数据源拷贝至目标数据
源, 或使用 Active 脚本转换数据, 或执行
SQL 语句, 或运行外部程序 。 也可以在 SQL
Server 数据源间传递数据库对象 。
? 包对象用来创建并存储步骤, 这些步骤定义了
一系列任务执行的顺序, 以及执行任务的必要
细节 。 包对象中还包括源列, 目标列以及有关
在数据传递过程中如何操纵数据的信息 。
6
? 包可以存储在 DTS COM 结构的存储文件中,
msdb 数据库中或 Microsoft Repository中。
? 可以通过以下工具来运行包, 它们是 dtsrun
工具, DTS Designer,DTS 的导入, 导出向
导, SQL Server Agent 来运行规划作业, 使
用 Execute 方法调用 DTS 包对象的 COM应用
程序 。
? 包是顶层对象, 它包含三种底层对象, 连接,
任务, 步骤 。
7
连接
? 连接定义了有关源和目标数据 ( 数据源或文件 )
的信息, 这些信息包括数据格式和位置以及安
全认证的密码 。 DTS 包可不包含或包含多个连
接 。 使用连接的任务有,
? DTS Data Pump 任务
? 执行 SQL 任务
? 数据驱动查询任务
? 定制任务
8
? 有三种类型的连接对象
? 数据源连接, 数据源连接定义了有关源和目标
OLE DB 数据源的信息 。 这些信息包括服务器
名称, 数据格式和位置, 以及安全认证的密码 。
第一个使用连接的任务负责创建该连接 。 如果
使用 ODBC 的 OLE DB 提供者, 则连接也可以
定义 ODBC 数据源信息 。
? 文件连接, 文件连接定义了有关源和目标文件
的信息, 这些信息包括文件格式和位置 。
? Microsoft 数据连接对象, Microsoft 数据连
接对象或者加载数据连接文件 ( *.udl) 或者为
OLE DB 提供者设置数据连接文件的属性 。
9
任务
? 每个 DTS 包都含有一个或多个任务, 每个
任务都是数据转换 ( 传递 ) 处理的工作项
目 。 任务的种类包括,
? 执行 SQL 任务, 即执行 SQL 语句
? Data Pump( 数据抽取) 任务:该任务为
Data Pump 操作定义了源和目标数据源以
及数据转换 。 Data Pump 从源和目标 OLE
DB 数据源间拷贝并转换数据 。
? ActiveX 脚本, 执行 ActiveX,VB,
Jscript 或 Perscript 脚本 。 凡是脚本支
持的操作都可以执行
10
? 执行处理任务 ( Execute Process task),
指执行外部程序
? 批量插入, 指执行 SQL Server 批拷贝操作
? 发送邮件, 使用 SQL Mail 发送寻呼或邮件
? 数据驱动查询, 执行 OLE DB 数据源间的高级
数据传递
? 转换 SQL Server 对象, 即从 SQL Server OLE
DB 数据源向另外的同类数据源复制对象 。 例
如表, 索引, 视图
11
步骤
? 步骤对象定义了任务执行的顺序, 以及某一任
务的执行是否依赖于前一个任务的结果 。 如果
某一任务不与步骤对象相关联, 则其将无法被
执行 。 可以为某一步骤设定运行条件, 使其只
在一定条件才被执行 。 为了提高执行的性能,
也可以并行执行多个步骤 。
? 步骤的一个重要特性是步骤优先权约束 。 步骤
优先权约束定义了前一步必须满足哪些条件之
后才会执行当前步骤 。 通过步骤优先权约束可
以控制任务的执行顺序, 有三种类型的优先权
约束,
12
? 完成, 表示前一步骤完成后就执行当前步骤,
而不管其成功与否
? 成功, 表示前一步骤只有成功执行才执行当前
步骤
? 失败, 表示前一步骤执行失败时才执行当前步

? 某一步骤可有多个优先权约束, 只有前一步满
足所有的约束后才能执行当前步骤 。
13
数据的导出
?1,导出数据库至 Access
?(1) 打开企业管理器,展开指定的服
务器,用右键单击该服务器图标,从弹出
的快捷菜单中选择所有任务( all tasks)
选项,然后再从子菜单中选择导出数据选
项,则会出现数据转换服务导入和导出向
导对话框,如图 1所示,它显示了该导出
向导所能完成的操作。
14
图 1 数据转换服务导出向导对话框
15
? (2)单击“下一步”按钮,就会出现选
择导出数据的数据源对话框,如图 2所示。
图 2 选择数据源对话框
16
? (3)单击“下一步”按钮,则会出现选择
目的对话框,如图 3所示。
图 3 选择目的数据库对话框
17
图 4 选择文件对话框
18
?(4) 选定目标数据库后,单击“下一步”
按钮,则出现指定表复制或查询对话框,
如图 5所示。
图 5 指定表复制或查询对话框
19
? (5)单击“下一步”按钮,则出现选
择源表和视图对话框,如图 6所示。
图 6 选择源表和视图对话框
20
图 7 列映射和转换对话框
21
图 8 查看数据对话框
22
? 列映射和转换标签里,各选项的含义如下,
? 创建目的表,在从源表拷贝数据前首先创建目标表,在缺
省情况下,总是假设目标表不存在 。 如果存在则发生错误,
除非选中了,除去并重新建立目的表, 选项 。
? 删除目的表中的行,在从源表拷贝数据前,将目标表的所
有行删除,仍保留目标表上的约束和索引 。 当然使用该选
项的前提是目标表必须存在 。
? 在目的表中追加行,把所有源表数据添加到目标表中,目
标表中的数据, 索引, 约束仍保留, 但是数据不一定追加
到目标表的表尾 。 如果目标表上有聚集索引,则可以决定
将数据插入何处。
? 除去并重新创建表,如果目标表存在,则在从源表传递来
数据前将目标表, 表中的所有数据索引等删除后重新创建
新目标表 。
? 启用标识插入,允许向表的标识列中插入新值。
23
? 转换标签页,各选项含义如下,
? 语言, 表示使用哪种脚本语言。
? 直接将源列复制到目的列, 表示不对原
表进行任何处理
? 在将信息复制到目的时对其进行转换,表
示通过脚本语言编写如何改变原始列的程

24
? (6)单击“下一步”按钮,则会出现保
存、调度和复制包对话框,如图 9所示。
图 9 保存、调度和复制包对话框
25
? 在 时间 选项区可以选择与包有关的操作
? 立即运行,表示立即运行包
? 用复制方法发布目的数据,表示由发布
目标来进行复制
? 调度 DTS包以便以后执行, 表示将包保
存之后在以后的某一规划时间运行 。
26
? 在 保存 选项,选中 保存 DTS包,则将包进行保

? SQL Server,将包存储在 msdb 数据库中
? SQL Server Meta Data Service,将包存储在
Repository 中
? Structured Storage File,以 DTS COM 结构的
文件格式存储, 容易通过文件服务器进行邮递
和分发
? Visual Basic File
27
? (7)单击“下一步”按钮,就会出现
导出向导结束对话框,如图 10所示。
图 10 确认导出数据对话框
28
2,导出数据库至文本文件
?(1) 启动企业管理器,展开选定的服务器,
用右键单击该服务器图标,从弹出的快捷菜单
中选择所有任务选项,然后再从子菜单中选择
导出数据选项,就会出现欢迎使用数据转换服
务导入和导出向导对话框,如图 1所示。
?(2)单击“下一步”按钮,则会出现选择数
据源对话框,如图 11所示。
?(3)单击“下一步”按钮,就会出现选择目
的数据库类型对话框,如图 13所示。
?(4)单击“下一步”按钮,就会出现指定表
复制或查询对话框,如图 15所示。
29
?(5) 单击“下一步”按钮,则出现选择目的
文件格式对话框,如图 16所示。
?(6)单击“下一步”按钮,就会出现保存、
调度和复制包对话框,如图 18所示,其中可以
设定是否创建 DTS包,何时执行复制操作,以
及将该包以何种方式存放。
?(7)单击“下一步”按钮,则出现数据转换
服务的导出向导结束对话框,如图 19所示,其
中显示了在该向导中进行的设置。
?( 8 ) 如果在该向导中选择了立即执行, 在向
导结束后, 则会出现执行数据导出对话框, 如
图 20所示, 该对话框显示了复制的执行结果 。
30
图 11 选择数据源对话框
31
图 12 设定高级连接属性对话框
32
图 13 选择目的数据库对话框
33
图 14 选择文件对话框
34
图 15 指定表复制或查询对话框
35
图 16 选择目的文件格式对话框
36
图 17 列映射和转换对话框
37
图 18 保存、调度和复制包对话框
38
图 19 确认导出数据对话框
39
图 20 执行数据导出对话框
40
数据导入 -导入文本文件数据库
?( 1 ) 启动企业管理器, 展开选定的服务器, 用
右键单击该服务器图标, 从快捷菜单中选择所有
任务 ( all tasks), 然后再从子菜单中选择导入数
据, 启动数据导入向导工具, 就会出现欢迎使用
向导对话框, 如图 1所示 。
?(2)单击“下一步”按钮,则出现选择数据源
对话框,如图 21所示。
?(3)在图 21中单击“下一步”按钮,则出现选
择文件格式对话框,如图 23所示。
?(4)单击“下一步”按钮,则出现指定列分隔
符对话框,如图 24所示。
41
?(5) 单击“下一步”按钮,就会出现选择目
的数据库类型对话框,如图 25所示。
?(6)单击“确定”按钮,则出现保存、调度
和复制包对话框,如图 28所示。
?(7)单击“下一步”按钮,则出现确认导入
数据对话框,如图 29所示。
?(8)如果在向导中设定了立即执行,在向导
结束后,则会出现数据导入对话框,如图 30所
示。该对话框中执行向导中定义的复制操作。
42
图 21 选择数据源对话框
43
图 22 选择文件对话框
44
图 23 选择文件格式对话框
45
图 24 指定列分隔符对话框
46
图 25 选择目的数据库对话框
47
图 26 选择源表和视图对话框
48
图 27 选择列映射和转换对话框
49
图 28 保存、调度和复制包对话框
50
图 29 确认导入数据对话框
51
图 30 进行数据导入对话框