您的当前位置:首页Oracle数据转换服务

Oracle数据转换服务

2024-05-23 来源:乌哈旅游
第18章数据转换服务主要内容

DTS

返回总目录↵ ↵ ↵

有关数据转换服务的基本概念如何使用DTS向导DTS Designer

󰂚 在使用SQL Server的过程中由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据所以数据的导出导入是极为常见的操作我们可以使用BCP命令来完成这一任务但是记住BCP的命令格式是一件令人头痛的苦差事虽然你可以查看帮助文件所以我们需要功能强大操作简单的工具来完成这一任务数据转换服务DTS提供了这种支持因此本章将介绍DTS的基本情况讨论DTS的各个构建组件以及如何完成数据转换服务

18.1 数据转换服务基本概念

18.1.1 数据转换服务简介

为了支持企业决策

许多组织都需将数据集中起来进行分析

但是

通常数据总是

以不同的格式存储在不同的地方有的可能是文本文件有的虽然具有表结构但不属于同一种数据源这些情况极大地妨碍数据的集中处理SQL Server为我们提供了令人

DTS本身包含多个工具并提供欣慰的组件即Data Transformation ServicesDTS

了接口来实现在任何支持OLE DB的数据源间导入导出或传递数据并使这一工作变得简单高效这意味着不仅可以在SQL Server数据源间进行数据的转储而且可以把Sybase

Oracle

Informix下的数据传递到SQL Server

利用Data Transformation ServicesDTS可能在任何OLE DBODBC驱动程序的数据源或文本文和SQL Server之间导入导出或传递数据具体表现在

数据的导入导出服务

通过读写数据在不同应用程序间交换数据例如可将文本文件或Microsoft Access数据库导入到SQL Server也可以把数据从SQL Server导出到任何OLE DB数据源

转换数据

所谓传递是指在数据未到达目标数据源前而对数据采取的系列操作比如DTS允许从源数据源的一列或多列计算出新的列值然后将其存储在目标数据库中

传递数据库对象在异构数据源情况下

DTS的内置工具只能在数据源间传递表定义和数据

如果

要传递其它数据库对象如索引约束视图时必须定义一个任务从而在目标数据库上执行那些包含在任务中的SQL语句SQL语句是被用来创建这些数据库对象的

18.1.2 DTS结构

DTS将数据导入导出或传递定义成可存储的对象即包裹或称为包每一个包都是包括一个或具有一定顺序的多个任务的工作流每个任务可以将数据从某一数据源拷贝至目标数据源或使用Active脚本转换数据或执行SQL语句或运行外部程序也可以在SQL Server数据源间传递数据库对象

包对象用来创建并存储步骤这些步骤定义了一系列任务执行的顺序以及执行任务的必要细节包对象中还包括源列目标列以及有关在数据传递过程中如何操纵数据的信息

包可以存储在DTS COM结构的存储文件中msdb数据库中或Microsoft Repository中

可以通过以下工具来运行包它们是dtsrun工具DTS DesignerDTS的导入导出向导SQL Server Agent来运行规划作业使用Execute方法调用DTS包对象的COM

应用程序

包是顶层对象

它包含三种底层对象

连接

任务

步骤

1连接

连接定义了有关源和目标数据数据源或文件的信息这些信息包括数据格式和位置以及安全认证的密码DTS包可不包含或包含多个连接使用连接的任务有

DTS Data Pump任务 执行SQL任务 数据驱动查询任务 定制任务

有三种类型的连接对象

数据源连接

数据源连接定义了有关源和目标OLE DB数据源的信息

这些信息包括服务器名

称数据格式和位置以及安全认证的密码第一个使用连接的任务负责创建该连接如果使用ODBC的OLE DB提供者则连接也可以定义ODBC数据源信息

文件连接

文件连接定义了有关源和目标文件的信息这些信息包括文件格式和位置 Microsoft 数据连接对象

Microsoft数据连接对象或者加载数据连接文件*.udl或者为OLE DB提供者设置数据连接文件的属性

2任务

传递

处理的工作

每个DTS包都含有一个或多个任务每个任务都是数据转换项目任务的种类包括

执行SQL任务即执行SQL语句

Data Pump任务该任务为Data Pump操作定义了源和目标数据源以及数据转

换Data Pump从源和目标OLE DB数据源间拷贝并转换数据

ActiveX脚本执行ActiveX, VB, Jscript或Perscript脚本凡是脚本支持的操

作都可以执行

指执行外部程序 执行处理任务Execute Process task

批量插入指执行SQL Server批拷贝操作 发送邮件使用SQL Mail发送寻呼或邮件

数据驱动查询执行OLE DB数据源间的高级数据传递

转换SQL Server对象即从SQL Server OLE DB数据源向另外的同类数据源

复制对象

例如表

索引

视图

3

步骤

步骤对象定义了任务执行的顺序

以及某一任务的执行是否依赖于前一个任务的结则其将无法被执行

可以为某一步骤设定运行

如果某一任务不与步骤对象相关联

条件使其只在一定条件才被执行为了提高执行的性能也可以并行执行多个步骤

有三种

步骤的一个重要特性是步骤优先权约束些条件之后才会执行当前步骤类型的优先权约束

完成表示前一步骤完成后

成功 失败

步骤优先权约束定义了前一步必须满足哪

通过步骤优先权约束可以控制任务的执行顺序

就执行当前步骤

而不管其成功与否

表示前一步骤只有成功执行才执行当前步骤表示前一步骤执行失败时才执行当前步骤

某一步骤可有多个优先权约束只有前一步满足所有的约束后才能执行当前步骤

18.2 DTS导入导出向导

DTS导入

导出向导帮助用户交互式地建立包

从而在具有OLE DB和ODBC驱

动程序的源和目标数据源间进行数据的导入导出和转换下面将以两个具体例子来讲解如何使用DTS向导同时将对其中涉及的每一个选项进行详细的介绍

例18-1使用DTS向导导出pubs数据库中的authors表利用SQL Server Enterprise Manager执行数据导出的步骤为

1

启动SQL Server Enterprise Manager后登录到指定的服务器右击DataTransformation Services文件夹在弹出菜单中选择All tasksExport data打开DTS Export Wizard 如图18-1所示图18-1 DTS Import/Export Wizard对话框

2

单击下一步按钮打开Choose a Data Source对话框如图18-2所示首先在Source Server旁的下拉列表中选择数据源在本例中选择MicrosoftOLE DB Provider for SQL Server如果使用SQL Server认证方式则应输入访问数据库的合法用户账号和密码在Database 旁的下拉列表中选择pubs先单击Refresh按钮图18-2 Choose a Data Source对话框

3

单击下一步按钮打开Choose a Destination对话框如图18-3所示在Destination旁的下拉列表中选择Microsoft OLE DB Provider for SQLServerDatabase 旁的下拉列表中选择DBA_pubs数据库图18-3 Choose a Destination对话框

4

单击下一步按钮打开Specify Table Copy or Query对话框如图18-4所示在此处可以指定传递的内容可以传递表或某一查询的数据结果集甚至于数据库对象在本例中选择Copy tablesfrom the source database

图18-4 Specify Table Copy or Query对话框

5

单击下一步打开Select Source Table and View对话框如图18-5所示从中选择一个或多个表或视图进行传递通过Preview按钮可对将要传递的数据进行预览图18-5 Select Source Table and View对话框

6

如果想定义数据转换时源表和目标表之间列的对应关系则单击Transform列的方格按钮打开Columns MappingTransformationand Constrains对话框如图18-6所示Column Mappings标签页图18-6 Column Mappings, Transformations and Constraints对话框 –

其中各选项的含义如下

Create destination table

总是假设目标表不存在

destination table if it exists选项

在从源表拷贝数据前首先创建目标表在缺省情况下如果存在则发生错误除非选中了Drop and recreate

Delete rows in destination table在从源表拷贝数据前将目标表的所有行删除

仍保留目标表上的约束和索引当然使用该选项的前提是目标表必须存在

Append rows to destination table把所有源表数据添加到目标表中目标表中

的数据

索引

约束仍保留

但是数据不一定追加到目标表的表尾

如果目标

表上有聚簇索引则可以决定将数据插入何处

Drop and recreate destination table如果目标表存在

则在从源表传递来数据前

将目标表表中的所有数据索引等删除后重新创建新目标表 Enable identity insert允许向表的标识列中插入新值

7在进行数据转换时可以通过脚本语言如Jscript Perscript

Vbscript

对源表中的某一列施加某种运算乘除或将该分割成几列或将几列合并然后再将这种结果复制到目标表此时应选中Columns Mapping成一列Transformationand Constrains对话框的 Transformations标签页如图18-7所示图18-7 Column Mappings, Transformations, and Constraints 对话框– Transformations标签页

其中各选项的含义如下

Language表示使用哪种脚本语言

Copy the source columns directly to the destination column表示不对原表进行任

何处理

Transform information as it is copied to the destination表示通过脚本语言编写

如何改变原始例的程序比如我们假设源表在拷贝到目标表时将源表address

列全转为小写则在空白区域的VB脚本是

'**********************************************************************

' Visual Basic Transformation Script' Copy each source column to the' destination column

'***********************************************************************Function MainDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationEnd Function

\"au_id\"

= DTSSource

\"au_id\"

\"au_fname\"\"au_lname\"\"phone\"

\"address\"

\"city\"\"state\"\"zip\"

\"contract\"

\"au_fname\"\"au_lname\"\"phone\"\"address\"\"city\"\"state\"\"zip\"

= DTSSource= DTSSource = lcase

= DTSSource = DTSSource = DTSSource

DTSSource

= DTSSource

\"contract\" = DTSSource

Main = DTSTransformStat_OK

8

应选中Columns MappingTransformationConstraints 标签页如图18-8所示and Constraints 对话框的图18-8 Columns Mapping, Transformation, and Constraints 对话框– Constraints标签页

9返回Select Source Table对话框单击下一步Replicate Package对话框如图18-9所示打开SaveSchedule and

图18-9 SaveSchedule and Replicate Package对话框

在When选项区可以选择与包有关的操作 Run immediately表示立即运行包 Create DTS package for Replication

表示让由发布目标来进行复制

Schedule DTS package for later execution表示将包保存之后在以后的某一规

划时间运行

在Save选项选中Save DTS Package则将包进行保存 SQL Server将包存储在msdb数据库中

SQL Server Meta Data Service将包存储在Repository中 Structured Storage File

务器进行邮递和分发 Visual Basic File10

以DTS COM结构的文件格式存储

容易通过文件服

单击下一步打开Save DTS Package对话框如图18-10所示在Name输入该包的名称AuthorsPackage可以将包保存在本地服务器或其它的远程服务器也可以选择适当的认证方式如果选择SQL Server认证要提供用户名和密码图18-10 Save DTS Package对话框

单击下一步在Completing the DTS Import/Export Wizard对话框中单击完成结束包的创建操作如图18-11所示󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀11

󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀在步骤4的Specify Table Copy or Query对话框中如果选中Use a Query to specify the󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀data to transfer选项单击下一步之后打开Type SQL Statement对话框如图18-12󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀所示在Query statement下的空白框中输入SELECT语句则该查询语句的结果集就󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀是所有转换数据可以通过单击Query Builder按钮来激活创建查询向导

图18-11 Completing the DTS Import/Export Wizard对话框

图18-12 Type SQL Statement对话框

󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀在步骤4的Specify Table Copy or Query对话框中如果选中Copy object and data󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀between SQL Server Database表示在源与目标数据源间传递数据对象包括表视图󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀存储过程参照完整性索引单击下一步打开Select Objects to Transfer对话框󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀󰀀如图18-13所示

图18-13 Select Object to Copy对话框

其中各选项的含义为

Create destination objects

在目标数据源中为所有传递对象创建目标对象

Drop destination objects first在创建新对象之前删除所有与源对象相同的目标对象

Include all dependent objects包括所有的依赖对象比如视图引用的基本表 Copy data选中该复选框表示允许从源向目标数据源拷贝数据

Replacing existing data用指定源数据源的数据覆盖目标数据源中的数据 Append data保留目标数据源中的原有数据并添加从数据源拷贝来的数据 Transfer all objects传递数据源中的所有数据库对象 Select objects只传递被选择的数据库对象 Options设置高级传递选项

Script file directory指定执行传递操作的SQL语句存储的目录

单击下一步继续包创建余下的创建步骤大体雷同

例18-2在该例中利用DTS Wizard向数据库中导入一个文本文件骤与例1基本相同下面主要介绍不同的创建步骤

1

其创建的步

建立源连接在例18-1的Step2的Choose a Data Source对话框中在Source旁的下拉列表中选择Text File选项然后输入文件的存储位置如图18-14所示

2设定文件格式单击下一步打开Select File Format对话框如图18-15所示

图18-14 Choose a Data Source对话框

图18-15 Select File Format对话框

Delimited符分隔 Fixed Field

把文本中的数据分配成不同的字段所有的字段必须以相同的结束

不同的字段宽度则执行第四步

把文本中的数据分配到具有相同宽度的字段中

则应执行第三步

如选中Fixed Field

可以不同

如果选中Delimited选项3

确定分界符单击下一步打开Specify Column Delimiter对话框如图18-16所示在该对话框中确定分界符来将文件中的文件按记录逐条分开成多列这里提供了常见的符号也可以在Other输入框中输入自定义的分界符

图18-16 Specify Column Delimiter对话框

4567定义每一字段的长度为导入数据输入目标表定义数据转换要求执行数据导入18.3 DTS Designer

DTS Designer与DTS Wizard一样都是在同构或异构数据源间进行数据的导入导出和转换但是DTS Designer是一个图形工具它使创建和编辑DTS包的工作变得更简单轻松而且提供了比DTS Wizard更为强大的功能

DTS Designer中包含几个关键性概念如连接数据传递这些概念对于理解DTS Designer是如何工作很有帮助

优先权约束任务

18.3.1 创建DTS Designer包

在包中不仅要指明源和目标数据源而且还要定义多个步骤每个步骤执行的任务在某些情况下还包括步骤优先权约束使用DTS Designer创建包首先要添加连接每个包包含目标连接和源连接

在连接中指明OLE DB提供者数据源

接着定义源和目

标连接间的数据转换然后要定义包将执行的任务也可以自定义任务最后决定是否运行包或将其存储以备后用

下面以具体地转换authors表为例子来说明如何使用DTS Designer来创建包而且在该例中我们要求将authors的au_fname列和au_lname 列合并成目标表desauthors的au_name列

18.3.2 添加连接

首先为包添加源与目标连接每个连接中指出了数据源的驱动程序OLE DB提供者所提出的要求不同

1

当然不同的

启动SQL Server Enterprise Manager后登录到指定的服务器右击DataTransformation Services文件夹在弹出菜单中选择New package选项打开DTS Package 对话框2在主菜单中单击Data菜单项在下拉菜单中选择Microsoft OLE DB Provider

for SQL Server选项打开Connection Properties对话框如图18-17所示图18-17 Connection Properties 对话框

18.3.3 定义数据转换

数据转换任务是将数据从源连接传递到目标连接的主要机制每个数据转换任务都要引用一个DTS Data Dump和OLE DB服务提供者

创建完源与目标连接后应创建数据转换其方法是按住键不放分别先后选中源连接和目标连接然后右击目标连接在弹出菜单中选择Transform data Task此时在DTS Designer工作区会出现从源连接指向目标连接的箭头流向如图18-18所示

以此来指明数据的

图18-18 创建数据转换任务

18.3.4 数据转换任务属性设置

1

创建完数据转换接着要进行转换的属性设置右击源和目标连接之间的箭头在弹出菜单中选择Properties选项打开Transform Data Task Properties对话框选中Source 标签页如图18-19所示在Source标签页可以选择来自源连接的数据Source标签页图18-19 Transformation Data Task Properties对话框 –

Table name表示来自源连接的一张表

SQL Query表示来自源连接的一个查询结果集

2选中Destination标签页如图18-20所示在Table name旁的下拉列表中选择目标表或Create New按钮创建新表在此单击Create New按钮在弹出对话框中输入如下内容Destination标签页图18-20 Transform Data Task Properties对话框 – CREATE TABLE [desauthors] [au_id] varchar [phone] char [city] varchar [state] char [zip] char

52122011

NOT NULL,5040

NOT NULL, NULL,

[au_name] varchar [address] varchar

NOT NULL, NULL,

NULL, NULL,

[contract] bit NOT NULL

选中Transformations标签页如图18-21所示该对话框允许定义源连接与目标连接列之间的映射关系可以定义以下几个映射关系一对一多对一或一对多在本例中进行映射要执行以下操作

如果源列与目标列之间已存在映射则选中两者间的箭头然后按键删除两者间的映射

3

Transformations标签页图18-21 Transform Data Task Properties对话框 –

按下键不放分别在Source table与Destination table中选择想要映射的列

单击New按钮在弹出的Create New Transformation对话框中选择ActiveX script选项

单击OK按钮

打开Transformation Options对话框

如图18-22所示

图18-22 Transformation Options对话框

4

分别选中Source columns和Destination columns标签页从中选择准备转换的列如果源与目标连接的列映射存在多对一或一对多的关系则通过脚本语言可在转换过程中对源数据列进行加工从而让转换结果满足用户的要求再单击Properties按钮打开Active Script Transformation Properties

对话框如图18-23所示图18-23 Active Script Transformation Properties对话框

在空白区域输入如下VB代码

'**********************************************************************' Visual Basic Transformation Script

'**********************************************************************' Copy each source column to the destination columnFunction MainDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationDTSDestinationEnd Function

\"contract\"\"zip\"\"state\"\"city\"\"phone\"\"au_id\"

= DTSSource

\"contract\"

= DTSSource = DTSSource = DTSSource = DTSSource = DTSSource

\"zip\"\"state\"\"city\"

\"address\"\"phone\"\"au_fname\"

+ DTSSource

\"au_lname\"

\"au_id\"

\"address\"\"au_name\"

= DTSSource = DTSSource

Main = DTSTransformStat_OK

5选中Lookups标签页如图18-24所示Lookup标签页图18-24 Transform Data Task Properties对话框 –

6选中Options标签页如图18-25所示Options标签页图18-25 Transform Data Task Properties对话框 –

18.3.5 定义任务

在完成数据转换属性设置之后可以向包中添加自定义任务其操作步骤为

1从左边的任务栏中将要添加的任务类型拖到DTS Designer工作区然后右击进行属性设置其属性对话框如图18-26所示在本例中所定义的任务是SQL脚本任务图18-26 Execute SQL Task Properties 对话框

2

添加自定义任务之后则应该在转换数据任务和自定义任务上定义优先级条件其操作顺序为先后选择自定义任务和某个源连接然后选择Workflow 菜单的On Success选项此时如图18-27所示图18-27 定义优先级条件

3在完成包的创建之后可以单击工具栏上的Run按钮来运行包在包执行时可以通过暂停和停止按钮来对执行过程进行控制如图18-28所示图18-28 运行包窗口

18.4 本章小结

在本章中我们主要介绍DTS的若干问题重点讨论了如何使用导入/导出向导以及DTS Designer来实现数据或数据库对象的转换

因篇幅问题不能全部显示,请点此查看更多更全内容