--用DTS移植数据
--数据转换服务(Data Transformation Services,简称DTS),它可以在任意数据源之间移动数据,并在移动过程中对数据进行清洗
--DTS通常用于将数据移动到SQL Server,但实际上它可以方便地在几乎所有的数据源之间移动数据
--注意:“复制数据库向导”和“导入/导出向导”实际只是创建和执行了DTS包
--DTS设计器
--“数据转换服务”->“本地包”->新建或打开包
--“连接”:可用的连接对象
--“任务”:包含了19个关键的数据转换任务,其中最常见的是“转换数据任务”和“执行SQL任务”
--“包属性”:在DTS的设计器中选择“包”->“属性”或右键“包属性”,可以打开包属性对话框
--添加“连接”
--添加“任务”
--1、源:源可以是源连接中的一个表、视图,或者一个SQL查询
--2、目的:接收数据的表
--3、转换:对源数据列和目的数据列进行匹配或者连接。一个列转换可以是下列情形之一:
--复制列是转换中最常见的情况
--日期时间字符串、小写字符串、字串、裁剪字符串和大写串的处理全都与复制列转换类似,不同的是
--它们中的每一个都增加了某种类型的数据转换功能
--读文件和写文件分别用于将数据导入或者导出到源列中所指定的文件
--对于包含有逻辑或者数据查找的复杂转换,需要使用ActiveX脚本实现
--4、查找:仅仅把数据从一个表移动到另外一个表是一项很简单的任务。但在很多情况下我们都必须在转换的过程中对数据进行修改
--转换任务可以调用查找脚本找出需要的值来替换源数据集中的值
--a、定义一个查找,“名称”:需要替换的源数据中的列名;“连接”:目的驱动;“高速缓存”:设置DTS执行时可以缓存的查询结果数量
--b、“查询”:可以打开查询设计器的一个变种,通过它可以为任意的连接定义有效的查询。该查询应当以源列表中的值为输入(参数),
--并返回相应的替代它的值以便插入目的表。输入的参数用‘?’来表示,而select语句所返回的值就是用于在目的表中替代输入参数的值
--下面的例子从源列中读出顾客类型的名字,并用查询所返回的CustomerTypeID来替代它
select customertypeid from customertype where (name = ?)
--为什么要这样做呢?源表中的customertype列为字符,而目的表中的customertypeid为整型,所以需要根据源表中的customertype(字符)
--从表customertype中得到相应的customertypeid以便插入到目的表的customertypeid(整数)中
--c、Active转换?
/*'**********************************************************************
' Visual Basic Transformation Script
'************************************************************************
' Copy each source column to the destination column
Function Main()
DTSDestination("CustomerTypeID") = DTSLookups("CustomerType").Execute(DTSSource("CustomerType"))
Main = DTSTransformStat_OK
End Function
*/
--5、转换选项:
--工作流控制
--DTS只包含几个任务的情况在实际中是很少见的。绝大多数DTS包都要执行数十个任务,而这些任务之间又具有错综复杂的关系。因此,执行
--顺序对于防止错误的发生至关重要。
--DTS通过以下选项来控制工作流的执行顺序:完成时(蓝色);成功时(绿色);失败时(红色)
--如:添加任务“执行SQL任务”(用来执行SQL语句),以在执行其他任务之前删除表中的数据。则此任务为第一个执行。选中此任务和第二个
--任务,然后从“工作流”中选择需要工作流类型(如完成),就可以设定这两个任务之间的执行顺序。执行好之后作用:先执行第一个任务,
--完成后,再执行第二个任务。。
--如果要为转换数据任务设置工作流,可以选择该转换任务的源连接,右键->“工作流属性”->设置工作流
--执行DTS包
--存储和移动DTS包
--1、“包”->“保存”:保存到本地服务器上。展开企业管理器控制台树的“数据转换服务”->“本地包”,将会看到那些保存的包
--2、“包”->“另存为”:提供了其他几种可选的存储格式和选项
--SQL Server:这种方法将包保存在任何已注册的SQL Server的MSDB数据库的sysdtspackages表中。如果已经注册了相应的服务器,
--这将是最简单的把包移动到另外一个SQL Server上的办法。如果要把包移动到还没有注册的服务器上,应使用“结构花存储文件”选项
--Meta Data Services:这种高级的方法可以跟踪已经为DTS修改的数据
--结构化存储文件:这种方法能够创建可以复制到另外一个SQL Server,并且可以在另外一台服务器上打开的文件。一定要注意SQL Server
--和service pack的版本号,因为具有不同的service pack级别的SQL Server 2000实例所使用的结构化存储文件有可能是不兼容的
--要打开用结构化存储文件格式保存的包,可以在企业管理器控制台树的数据转服务节点的快捷方式菜单中选择“打开包”菜单命令
--Visual Basic文件:这个选项可以生成与SQL Server DTS包完成同样任务的VB脚本
--注意:如果已经使用“包”->“另存为”命令保存了包,“包”->“保存”命令将用上一个“另存为”命令所选择的位置和格式来保存这个包
--增量和版本
--数据转换服务还有一个很好的特性:它能够对包的变化进行管理。包的每次保存都会产生该包的一个新版本,最终就会形成该包的多个连续的版本
--如果要查看任意包所保存的各个版本,可以在企业管理器中,从本地包清单中选择一个DTS包,然后选择“操作”->“版本”菜单命令,或者从
--该包的快捷方式菜单中选择“版本”菜单。此时将会打开“DTS包版本”对话框,并显示该包的各个版本的日期和描述
--使用“DTS包版本”对话框,可以打开以前的版本进行编辑或者对它们进行清理。如果想恢复到某个以前的版本,可以打开该版本进行编辑,然后】
--使用“包”->“另存为”菜单命令以一个新名字保存该包
你用的SQL Server是哪个版本,如果是2005以上,就不叫DTS了,而是在商业智能开发工具中集成了,现在的名字叫做SSIS(SQL Server集成服务)。
其实简单来做的话,使用SQL Server中的导入导出向导也可以。