第 15章 数 据 转换
15-1 数 据 转换概 述
15-2 导 入 数 据
15-3 导 出 数 据
15-4 DTS设计 器
SQL Server 2000为了支持企事业决策支持中浩瀚数据的处理,提供了令人欣慰的数据转换服务。本章介绍了 DTS包,DTS任务,DTS连接和 DTS工具,并叙述了 SQL Server中导入数据与导出数据的方法和 DTS 设计器的运用。
第 15章 数 据 转换
SQL Server 2000为 了支持企事 业决 策支持中浩瀚 数 据的 处 理,提供了令人欣慰的 数 据 转换 服 务 。本章介 绍 了 DTS包,DTS任 务,DTS连 接和 DTS工具,并叙述了 SQL Server中 导 入 数 据 与导 出 数 据的方法和 DTS 设计 器的 运 用。
15-1 数 据 转换概 述在一 个颇 具 规 模的信息 处 理系 统 中,经 常 会 涉及到源于不同地点、以不同格式存 储并 隶 属 于不同 数 据 库 管理系 统软 件 开发 的 数 据信息,凡此 种种,都 极 大地妨碍着 数据的集中 处 理,影 响 了系 统 的正常 运 行,据此,在 SQL Server 2000中 为 了支持企事 业决 策中浩瀚的 数 据 处 理,提供了令人欣慰的 数 据 转换 服 务 (Data
Transformation Services:DTS)。
数 据 转换 服 务 (DTS) 是一 组图 形工具 组 件,包含多 个处 理工具,并 提供了接口 来实现 在不同地点、基于不同 数 据 库 管理系 统 的不同 数 据源 间数 据的 导 入 导 出或 传输 。
这 意味着通 过 DTS组 件不 仅 可以在 SQL Server 数 据源 间进 行 数 据的 转储,而且可将 Sybase,Oracle,Informix,DB2,Visual FoxPro,Access等下的 数 据 传输到 SQL Server 2000,反之亦然。
1,DTS包
DTS 将数 据 导 入,导 出或 传输归结 成可存 储 的 对 象,DTS包,每一 个 包都是包括一个 或具有一定 顺 序的多 个 任 务 的工作流,每 个 任 务 可以 将数 据 从 某一 数 据源拷 贝 至目 标数 据源、或使用 Active 脚本 转换数 据、或 执 行 SQL 语 句、或 运 行外部程序。
也可以在 SQL Server 数 据源 间传输数 据 库对 象。包 对 象中 还 包括源列、目 标 列以及有 关 在 数 据 传递过 程中如何操 纵数 据的信息。
2,DTS任 务
DTS是 SQL Server提供的数据传输服务,是 DTS 对象模型的一部分,可通过 DTS
设计器图形化访问或者基于编程方式访问 。
利 用 DTS可以完成以下任务:
( 1)数据的导入与导出。数据的导入与导出系指在不同应用之间按普通格式读取数据,从而实现数据出入的交换过程。如将文本文件或 OLE DB 数据源(如 Access
2000 数据库)导入到 SQL Server数据库中,也可以把数据从 SQL Server 导出到任何 OLE DB 数据源或 ODBC数据源中。 DTS 还允许将数据从文本文件高速装载到
SQL Server 表。
( 2)转换数据格式。转换数据格式涉及数据传输。数据传输是指在数据未到达目标数据源前而对数据采取的系列操作。 SQL Server 2000 允许用户将数据在实现数据传输前进行数据格式转换。例如,DTS 允 许从源数据源的一列或多列计算出新的列值,然后将其存储在目标数据库中。 DTS 设计器还包括一个数据驱动的查询任务,使用户得以将数据映射到参数化查询。通过转换数据格式,用户可以方便地实施复杂的数据检验,进行数据的重新组织(如排序、分组等),还可提高数据的传输效率。
( 3)传输数据库对象。基于 DTS用户除了可传输数据之外,尚能传输索引、视图、
登录、存储过程、触发器、规则、默认值、约束、用户定义数据类型及生成脚本以复制数据库对象。例如,用户可以得心应手地将一个 SQL Server 2000 数据库中的表以及建立在表上的所有存储过程、触发器和约束等全部传输到另外一个数据库中去。
( 4)用户或包间消息收发。 DTS 包含一个发送邮件任务,可以在包步骤成功或失败时发送电子邮件。 DTS 中的执行包( Execute Package),允许一个包将另一个包作为一个包步骤来运行,DTS还包含一个消息队列任务,使用户得以使用消息队列发送和接收包间消息。
3,DTS连 接
SQL Server 2000下 DTS支持如下数据源的连接与转换:
SQL Server 2000数据库 。
Oracle系列数据库 。
ODBC Date数据源 。
Microsoft Access数据库 。
Microsoft Visual FoxPro数据库 。
DBase或 Paradox数据库 。
Microsoft Excel 电子表格 。
ASCII定长字段 ( 列 ) 文本文件 。
4,DTS工具为 了完成 数 据 转换 服 务 操作,SQL Server 2000 主要包括以下若干工具:
DTS 导 入,导 出向 导 。
DTS 设计 器。
基于企业管理器的 DTS节点。
基于命令行的 DTS 。
dtsrun 实 用工具 从 命令提示 运 行包。
15-2 导 入 数 据
DTS 导 入 导 出向 导 可以 帮 助用 户 交互式地在源、目 标数 据源 间进 行 数 据的 导 入,导 出和 转换 。 DTS 导 入向 导则 可 从别 的 数 据源中 将数 据 导 入 SQL Server,并实现数 据格式的 转换 。
在下面的示例中,将 用 DTS 导 入向 导从 一 个 名 为,信息管理,的 Access数 据 库 中 导 入 学 生、成绩,班 级,课 程等 数 据表。
启动 DTS 导入(导出)向导有多种方法,可在企业管理器中启动 DTS 导入(导出)向导,
也可通过左击 【 开始 -程序 】 下 【 Microsoft SQL Server】,选择 【 导入和导出数据库 】 选项,启动 DTS 导入(导出)向导。在此仅以后者为例进行述说。
( 1)左 击 【 开 始 -程序 】 下 【 Microsoft SQL Server】,选择 【 导 入和 导 出 数 据 库 】
选项,启动 DTS 导 入向 导将 出 现 【 DTS 导 入 /导 出向 导 】 对话 框,单击 【 下一步 】 按钮,弹 出 【 选择数 据源 】 对话 框。
( 2)在 【 选择数 据源 】 对话 框的 数 据源列表中,选择 要 导 入的 数 据源 为 【 Microsoft
Access】 数 据 库,在文件名中 浏览输 入 【 信息管理 】 数 据 库 所在的文件 标识,并输入用 户 名和密 码 (可以不 输 入),单击 【 下一步 】 按 钮,弹 出 【 选择 目的 】 数 据源 对话 框。
( 3)在 【 选择 目的 】 数 据源 对话 框中,选择 【 用于 SQL Server的 Microsoft OLE DB
提供程序 】 的 数 据 库,服 务 器列表中 选择 具体的服 务 器及身 份验证 方法。若身 份验证为
【 使用 SQL Server身 份验证 [W]】,则 要 输 入用 户 名和密 码 。在 数 据 库 列表中 选择 具体的 数 据 库 (倘 若单击无反应,可点击刷新即可选择),单击 【 下一步 】 按钮,进入
【 指定表复制或查询 】 对话框。
( 4)在 【 指定表复制或查询 】 对话框中,选择 【 从源数据库复制表和视图 】 选项(该项为默认项),单击 【 下一步 】 按钮,进入 【 选择源表和视图 】 对话框。
( 5)在 【 选择源表和视图 】 对话框中,选择欲导入到 SQL Server 2000数据库的源表视图,单击 【 下一步 】 按钮,进入 【 保存、调度和复制包 】 对话框。
( 6)在 【 保存、调度和复制包 】 对话框中,选择时间为 【 立即执行 】 复选框,并且可按需选择另外两个复选框( 注:若需要定期从相关数据库中导入数据时,可选择 【 调度 DTS包以便以后执行 】 复选框,设置每次运行的时间,并保存 DTS包 ),然后单击
【 下一步 】 按钮,弹出 【 正在完成 DTS 导入 /导出向导 】 对话框。
( 7)在 【 正在完成 DTS 导入 /导出向导 】 对话框中,单击 【 完成 】 按钮,弹出 【 进度列表 】 对话框。在此过程中,可以看到系统将会运行导入过程成功的信息及自动弹出
【 成功导入表数据库 】 对话框,单击 【 确定 】 按钮,返回单击 【 完成 】 按钮,即可结束整个 DTS 导入数据过程。
DTS 导 出向 导 可以完成 将 `SQL Server数 据 库 中的 数 据 转换为 其 它数 据格式,并输 出到其 它数据文件。
在下面的示例中,利用 DTS 导 出向 导将 【 信息管理 】 数 据 库 的相 关 表,视图数 据 转换为 其 它数据文件,向 Access数 据 库 中 导 入 学 生、成 绩,班 级,课 程等 数 据表。在企 业 管理器中 启动 DTS
导 出向 导,打 开 【 工具 】 菜 单,单击 【 数 据 转换 服 务 |导 出 】 按 钮 。
( 1)在 【 DTS 导 入 /导 出向 导 】 对话 框,单击 【 下一步 】 按 钮,弹 出 【 选择数 据源 】 对话 框。
( 2)在 【 选择数据源 】 对话框的数据源列表中,选择要导入的数据源为 【 用于 SQL Server的
Microsoft OLE DB 提供程序 】 的数据库,服务器列表中选择具体的服务器及身份验证方法。
若身份验证为 【 使用 SQL Server身份验证 [W]】,则要输入用户名和密码。在数据库列表中选择 【 信息管理 】 数据库(倘若单击无反应,可点击刷新再选择),单击 【 下一步 】 按钮,进入如图 15-12 所示的 【 选择目的 】 数据对话框。
( 3)在 【 选择目的 】 数据对话框中,选择数据为 【 Microsoft Access】 数据库,在文件名中浏览输入 【 信息管理 】 Access数据库所在的文件标识等信息,单击 【 下一步 】 按钮,弹出 【 指定表复制或查询 】 对话框。
( 4)在 【 指定表复制或查询 】 对话框中,选择 【 从源数据库复制表和视图 】 选项(该项为默认项),单击 【 下一步 】 按钮,进入 【 选择源表和视图 】 对话框。
( 5)在 【 选择源表和视图 】 对话框中,选择欲导入到 Access【 信息管理 】 数据库的 SQL
Server 源表,单击 【 下一步 】 按钮,弹出 【 保存、调度和复制包 】 对话框。
( 6)在 【 保存、调度和复制包 】 对话框中,选择时间为 【 立即执行 】,并且可按需选择另外两个复选框(同导入的相应过程相仿),然后单击 【 下一步 】 按钮,弹出 【 正在完成 DTS 导入 /
导出向导 】 对话框。
( 7)在 【 正在完成 DTS 导入 /导出向导 】 对话框中,单击 【 完成 】 按钮,弹出 【 进度列表 】 对话框。在此过程中,可以看到系统将会运行导入过程成功的信息及自动弹出 【 成功导出表数据库 】 对话框,单击 【 确定 】 按钮,返回单击 【 完成 】 按钮,即可结束整个 DTS 导出数据过程。
15-3 导 出 数 据
15-4 DTS设计 器
DTS 设计 器是一 个图 形工具,与 DTS导 入 导 出向 导 一 样 都能在同 构 或 异构数 据源间进 行 数 据的 导 入 导 出和 转换,但是 DTS设计 器可使 创 建和 编辑 DTS 包的工作 变 得更 简单 便捷,而且提供了比 DTS Wizard 更 为 强大的功能,可以定 义复杂 的工作 过 程。
( 1)在此 将 通 过 使用 DTS 设计 器,建立 数 据 转换 服 务来说 明具体的操作步 骤 。 在 SQL
Server 企 业 管理器控制台 树 中,展 开 服 务 器 节 点下的 【 数 据 转换 服 务 】 节 点,右 击 【 数据 转换 服 务 】 节 点,然后在 弹 出的快捷菜 单 中 单击 【 新建包 】 命令,弹 出如 图 15-18所示的 【 DTS 设计 器界面 】 对话 框。
在 【 DTS 设计 器界面 】 对话 框中,点 击连 接工具 条 上 【 Microsoft OLE DB
Provider for SQL Server】 图标,弹 出如 图 15-19所示的 【 连 接 属 性及所建的 连 接 】 对话 框,用于建立 连 接。在 【 连 接 属 性及所建的 连 接 】 对话 框中,连 接所要 连 接的服 务 器、
登 录 方式以及登 录时 的默 认数 据 库 等。点 击 【 确定 】 按 钮,完成第一 个连 接的配置。此时会 出 现 一 个 表示相 应 OLE DB数 据源的 图标 。重 复 ( 2)到( 3) 间 的操作用于建立第二个连 接 。
在建立 两个连 接的基 础 上可以 开 始 实现 彼此 间 的 数 据 传输 操作。任意确定其中的源连 接 与 目 标连 接。点 击 【 任 务 】 菜 单 的 【 转换数 据任 务 】 命令 项,用出 现 的 【 选择连 接 】
箭 头 分 别 点 击 源 连 接 与 目 标连 接 图标,会 在源 连 接 与 目 标连 接 图标间 出 现 一 条 表示 转换数图 15-21 转换数 据任 务 的 连 接箭 头,
选择并 右 击 表示 转换数 据任 务 的 连 接箭 头,从弹 出的快捷菜 单 中 单击 【 属 性 】 命令,
弹 出如 图 15-22所示的 【 转换数 据任 务属 性 】 对话 框,在 【 源 】 属 性 页 中 设 置,在 【 目的 】 属 性 页 中定 义 要在目 标连 接上 进 行的操作,在 【 转换 】 属 性 页 中定 义 要 进 行的 转换 操作( 设 置源表 与 目 标 表 间 的 对应关 系),在 【 选项 】 属 性 页 中 则 可定 义数 据移 动 等 设 置。
( 2)建立 执 行 SQL服 务 。使用 执 行 SQL 任 务,可以在包 运 行期 间执 行 SQL 语 句,该 任务 也可以保存作 为查询结 果的 数 据。
在 图 15-18 DTS 设计 器中点 击 【 任 务 】 菜 单 的 【 执 行 SQL服 务 】 命令 项,弹 出如 图 15-
23所示 。 在 SQL语 句文本框中 输 入相 应为 完成某些操作的具体的 SQL语 句 。
在 【 执 行 SQL 任 务属 性 】 对话 框中点 击 【 生成 查询 】 按 钮,弹 出如 图 15-24所示 【 数 据转换 服 务查询设计 器 】 的 对话 框 。 从 中可 浏览 具体 SQL语 句 与运 行 结 果 。
通 过 上面的若干操作,会 在 DTS设计 器中 产 生相 关 的任 务图标,如 图 15-25所示 。
图 15-18 DTS 设计 器界面
DTS实 施操作任 务 ( 如 转换数 据,执 行 SQL 任 务,执 行包任 务,执 行 进 程任 务,发 送 邮 件任 务,ActiveX 脚本任 务等 )
DTS连 接的 数 据 对 象 类 型 ( 如 ACCESS,VFP,EXCEL、
ORACLE,SQL SERVER,PARADOX,HTML,TXT等

图 15-19 连接属性及所建的连接对话框建立的第一 个连 接图 15-21 转换数据任务的连接箭头图 15-23 执行 SQL 任务属性图 15-25 DTS包及其所建连接与任务数 据 转换 服 务 (DTS) 是一 组图 形工具 组 件,包含多 个处 理工具,并 提供了接口来实现 在不同地点、基于不同 数 据 库 管理系 统 的不同 数 据源 间数 据的 导 入 导 出或 传输 。
DTS 将数 据 导 入,导 出或 传输归结 成可存 储 的 对 象,DTS包,每一 个 包都是包括一 个或具有一定 顺 序的多 个 任 务 的工作流,每 个 任 务 可以 将数 据 从 某一 数 据源拷 贝 至目 标数 据源、或使用 Active 脚本 转换数 据、或 执 行 SQL 语 句、或 运 行外部程序。
DTS是 SQL Server提供的 数 据 传输 服 务,数 据的 导 入 与导 出,转换数 据格式,传输数据 库对 象、用 户 或包 间 的消息收 发 。 DTS支持 SQL Server 2000数 据 库,Oracle系列数 据 库,ODBC Date数 据源,Microsoft Access数 据 库,Microsoft Visual FoxPro
数 据 库,DBase或 Paradox数 据 库,Microsoft Excel 电 子表格和 ASCII定 长 字段(列)
文本文件等的 连 接 与转换 。
DTS 导 入 导 出向 导 可以 帮 助用 户 交互式地在源、目 标数 据源 间进 行 数 据的 导 入,导 出和 转换 。 DTS 导 入向 导则 可 从别 的 数 据源中 将数 据 导 入 SQL Server,并实现数 据格式的 转换 。 DTS 导 出向 导 可以完成 将 `SQL Server数 据 库 中的 数 据 转换为 其 它数 据格式,并输 出到其 它数 据文件。
DTS 设计 器是一 个图 形工具,与 DTS导 入 导 出向 导 一 样 都能在同 构 或 异构数 据源 间进行 数 据的 导 入 导 出和 转换,但是 DTS设计 器可使 创 建和 编辑 DTS 包的工作 变 得更 简单便捷,而且提供了比 DTS Wizard 更 为 强大的功能,可以定 义复杂 的工作 过 程。
15-5 本章小 结
1,何谓数据转换服务 (DTS)?
2,使用 DTS可以完成哪些任务?
3,为了完成数据转换服务操作,SQL Server 2000 主要提供哪些工具。
4,SQL Server 2000下 DTS支持哪些数据源的连接与转换。
5,熟悉 DTS 导入向导的运作过程。
6,熟悉 DTS 导出向导的运作过程。
7,何谓 DTS 设计器?
习题十五