SQLServer数据传输.ppt
《SQLServer数据传输.ppt》由会员分享,可在线阅读,更多相关《SQLServer数据传输.ppt(66页珍藏版)》请在三一办公上搜索。
1、第十八章 SQL Server数据传输,18.1 概述,作为数据库管理员,在数据库之间导入、导出数据是一项经常执行的基本任务。例如,将测试服务器上的数据库迁移到生产工作服务器上,或者是移动表中的部分数据,也可能是将数据库中的数据转换为另一个产品的格式来保存,这些工作都是导入、导出数据的简单形式。本章总结了SQL Server数据传输的常用工具,如DTS、T-SQL、BCP、复制等,满足用户在数据传输过程中的不同要求。,18.1.1 数据传输的原因,管理员必须理解如何在应用程序和环境之间传输数据。几乎所有的环境都要执行求一定程度的数据转移工作。数据迁移将数据从外部数据源导入 SQL Server
2、 实例很可能是建立数据库后要执行的第一个工作。数据导入SQL Server数据库后,即可开始使用该数据库。例如,将Excel工作表中的数据导入SQL Server实例,迁移完成后,该SQL Server数据库将直接用于所有与数据相关的任务,而不再使用原来的系统。改变数据格式转换数据可能是简单的数据类型间的映射转换,还可能是包含了数据逻辑的复杂操作。例如,源数据库中的IS_Payment字段存放“ture”或“false”值,而目的数据库的值是1或0。在执行数据传输时,可把格式为“ture”或“false”的数据转换为1或0,使得数据的表达方式一致。重构数据在重构数据中,可能需要把来自多个数据源
3、、表和列的数据在目的数据库组合成一个单一的表。例如,在一个企业应用中,把多个下级部门的数据通过聚集和汇总储存在上级主管部门的数据库中。转换异构数据异构数据是以多种格式存储的数据,例如存储在SQL Server数据库、文本文件和 Excel 电子表中的数据。转换异构数据就是将这些使用不同格式存储的数据转换到统一存储模式中。调度作业SQL Server代理程序会自动的调度数据传输的过程。例如,通过定义自动化任务保存数据的导入、导入规则,在指定的时间由系统调度任务执行,以减少每次数据传输时的手工调度过程和重复的步骤。,18.1.2 数据传输工具一览,数据传输的基本过程包括:确定数据源和目的地,明确在
4、数据源和目的地之间传输或转换数据,定义数据传输或转换的规则。SQL Server提供了几个数据传输工具,用户根据特定需要选择适当的工具完成工作。DTS导入/导出向导DTS(Data Transformation Service)导入/导出向导以交互式的方式指导用户完成数据传输的工作。用户可以轻易的完成在不同的数据源之间传输或转换数据。在连接源和目的数据库之后,便可以选择要导入或导出的数据,并可对数据的格式进行转换。DTS工具提供了在数据源之间传输数据的最简单的方法。bcp实用程序bcp(bulk copy)是一个在命令提示符下的实用工具。BCP命令能够在本地SQL Server和ASCII码文
5、本文件之间导入/导出的数据。T-SQL语句SELECT INTO语句能够将结果集创建为一张新表,并且实现拷贝表结构的功能。INSERT SELECT 语句可用于将一个或多个其它的表或视图的记录添加到目的表中。使用BULK INSERT语句能够把一个数据文件拷贝到一张表中。复制复制是一组解决方案,用于在企业范围内发布、分发数据。使用复制可以将数据分发到不同位置,通过局域网、拨号连接、Internet分发给远程或移动用户,拉近用户与数据的距离,增强数据的独立性。数据库备份与恢复数据库备份与恢复不仅能够保证数据的安全而且作为数据传输的方法之一,能够把一个完整的SQL Server数据库,包括所有的数
6、据和对象,移动到另一个SQL Server实例,并且能够通过日志传送的方法不断向目的数据库追加数据(参见第十四章 数据库备份与恢复与自动化管理)。分离和附加数据SQL Server允许分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器,甚至同一台服务器上。分离数据库将从SQL Server删除数据库,但是保持在组成该数据库的数据和事务日志文件完好无损。这些数据和事务日志文件可以用来将数据库附加到任何SQL Server实例上,这时数据库的使用状态与它分离时的状态完全相同。例如,直接将数据库从一台计算机迁移到另一台计算机,而不必使用重新创建数据库,然后手动还原数据库备份的办法。(参见
7、第十四章 数据库备份与恢复与自动化管理)。,18.2 使用DTS进行数据搬运,数据转换服务(DTS)导入/导出向导提供生成 DTS 包的最简单方法,可以交互式地指导您完成整个复制和转换数据的过程。DTS 导入/导出向导为在OLE DB数据源之间复制数据提供了最简单的方法。,18.2.1 启动DTS向导,打开SQL Server企业管理器单击运行向导按钮,在【选择向导】对话框中展开【数据转换服务】节点可以启动【DTS导出向导】或者【DTS导入向导】。如果从【开始】菜单【SQL Server程序组】中启动【DTS 导入/导出向导】,则不需要指定是导入数据还是导出数据。,18.2.2 连接数据源和目
8、的地,数据转换服务(DTS)能够对兼容ODBC和OLE DB提供程序的数据建立连接。要成功执行复制和转换数据的任务,则必须与源数据和目的数据建立有效的连接。使用 DTS 导入/导出向导,可以连接到下列数据源:大多数的 OLE DB 和 ODBC 数据源以及用户指定的 OLE DB 数据源。文本文件。到一个或多个Microsoft SQL Server实例的其它连接。Oracle和Informix数据库。必须已经安装Oracle或Informix客户端软件。Microsoft Excel电子表格。Microsoft Access和 Microsoft FoxPro数据库。dBase或Parado
9、x数据库。连接数据源时须指定任何要求的登录、安全性或文件位置信息。如果正在从文本文件导入数据,则必须指定文本文件的格式和分隔符。如图18.1所示,18.2.2 连接数据源和目的地,18.2.3 设定转换模式,在【指定表复制或查询】对话框列出了以下选项,如图18.2所示:从源数据库复制表和视图用一条查询指定要传输的数据在SQL Server数据库之间复制对象和数据,18.2.3 设定转换模式,从源数据库复制表和视图在【指定表复制或查询】对话框中选择【从源数据库中复制表和视图】选项,单击【下一步】,显示【选择源表和视图】对话框。使用此对话框指定要向目的复制的表和视图,如图18.3所示。可以将整个表
10、或者表中部分字段的数据以及视图复制到指定的目的,在这个过程中将不筛选或排列记录。如果选择了源而不执行其它操作,将从源不加更改地复制架构和数据。,18.2.3 设定转换模式,单击【转换】网格中按钮显示【列映射和转换】对话框,如图18.4所示。在其中可指定源数据列对的目列的映射、编辑目的列的属性,以及指定记录添加到目的表中的方式。如果目的表不存在,则在目的数据库中创建表,如果目的表存在,那么可以使用【删除目的表中的行】让源表中的行替换目的表中的行,或者选择【在目的表中添加】将源表中的行追加到目的表中。在【选择源表和视图】对话框中,单击【预览】按钮,在运行数据转换服务前,预览源数据以对其进行验证。单
11、击【上一步】返回【指定表复制或查询】对话框。,18.2.3 设定转换模式,用一条查询指定要传输的数据在【指定表复制或查询】对话框中选择【用一条查询指定要传输的数据】选项,单击【下一步】,显示【键入 SQL 语句】对话框,在其中可生成用于在表或视图中检索特定行的SQL语句,只有符合选择条件的行才可用于复制,如图18.5所示。单击【上一步】返回【指定表复制或查询】对话框。,18.2.3 设定转换模式,在SQL Server数据库之间复制对象和数据在【指定表复制或查询】对话框中选择【在SQL Server数据库之间复制对象和数据】选项,单击【下一步】,显示【选择要传输的对象】对话框。如果数据的源和目
12、的都是SQL Server数据库,则在此对话框中可以指定要复制的对象和数据。可传输的对象包括表、视图、存储过程、默认值、规则、约束、用户定义的数据类型、登录、用户、角色和索引,如图18.6所示。对象只能在多个SQL Server 7.0实例间传输,或从SQL Server 7.0实例传输到SQL Server 2000实例,以及在多个SQL Server 2000实例间传输。,18.2.3 设定转换模式,创建目的对象选项此选项为所有要传输的对象创建目的对象(包括表、视图、存储过程、默认值、规则、约束、用户定义的数据类型、登录、用户、角色和索引),启用下列选项:【首先丢弃目的对象】创建新目的对象
13、之前,丢弃所有相应的目的对象。【包括所有相关对象】在数据传输中包括所有相关对象,例如在传输视图的同时传输视图引用的表。【包括所有扩展属性】包括所有扩展属性,这些属性是用户在数据库中的不同对象上提供的定义。复制数据此选项用于设置从源向目的复制SQL Server数据以及下列复制选项:【替换现有数据】用指定的源中的新数据改写目的对象中现有数据。【追加数据】保留目的对象的现有数据,并从追加新数据到目的对象中。,18.2.3 设定转换模式,使用排序规则使得能够在不同的排序规则间复制数据。复制所有对象传输所有与指定的数据源关联的对象。使用默认选项将各高级传输选项设置为默认值。选择对象清除【传输所有对象】
14、复选框,则【选择对象】按钮的状态为“可用”,可以在其中可选择要传输的个别对象。如图18.7所示,18.2.3 设定转换模式,选项清除【使用默认选项】复选框,则【选项】按钮的状态为可用,可以在其中进一步指定数据库用户和角色、SQL Server登录、对象的权限、以及表的传输选项,如图18.8所示。脚本文件目录指定脚本文件和日志文件写入的目录。每个选定对象的SQL和数据文件都将脚本文件写入某个目录,该目录必须位于任务所在的同一台计算机上。该目录中的脚本和日志文件一直可被访问,直到下次执行时文件由新信息重写。,18.2.4 保存和调度DTS包,保存DTS包数据源源、目的和转换的规则可以保存为数据转换
15、服务(DTS)包,并调度该文件按预定义的时间间隔运行,如图18.9所示。DTS包可以保存到msdb 数据库、SQL Server 2000 Meta Data Services、COM 结构化存储文件或 Microsoft Visual Basic文件。,18.2.4 保存和调度DTS包,Microsoft SQL Server默认使用该选项保存DTS包,在【保存DTS包】对话框中填写所需字段。DTS包存储在 SQL Server msdb 数据库中,在SQL Server企业管理器保留DTS包的清单,供以后调度。SQL Server 2000 Meta Data Services。使用该保存
16、选项,对于包操作的数据,可以维护有关这些数据的历史信息。但是,必须要在您的服务器上安装 Meta Data Services,及知识库数据库,而且它们还必须是可操作的。可以跟踪某些列和表,包将这些列和表用作源或目的。也可以使用数据沿袭功能以进行跟踪,查明是包的哪个版本创建了某个特殊的行。可以将这几种类型的信息用于决策支持应用程序。结构化存储文件。使用该保存选项,可以通过网络复制、移动及发送包,而不必将文件存储在SQL Server数据库中。结构化存储格式允许您在单个文件中维护多个包及多个包版本。Microsoft Visual Basic文件。使用该保存选项,可以通过应用程序开发工具修改DTS
17、包的定义。该选项将包写成 Visual Basic 代码脚本,并且日后可以在自己的开发环境中打开Visual Basic文件及修改包定义。,18.2.4 保存和调度DTS包,调度DTS包数据转换服务(DTS)包保存所有的 DTS 连接、DTS 任务、DTS 转换以及工作流步骤,并在 DTS 设计器的设计表中保留这些对象的图形布局。保存DTS包后,单击浏览按钮显示【编辑反复出现的作业调度】对话框,在其中可调度包的执行。如果没有修改调度,默认为每天午夜 12:00 运行包。如果选择【用复制方法发布目的数据】选项时,DTS 导入/导出向导结束运行后将启动创建发布向导。DTS任务设置完毕后,将进行数据
18、传输工作,如图18.10所示,如果在任务执行过程中出现错误,双击出现错误的子任务,查询错误信息。,18.3 bcp实用程序,bcp是一个在命令提示符下的实用工具,能够将 SQL Server数据复制到某个数据文件或从某个数据文件复制数据到SQL Server实例。该实用工具作为解决异构数据问题的方法之一,最常用于将大量数据从其它程序(通常是另一种数据库管理系统)传输到SQL Server表中。数据首先从数据源导出到数据文件,然后使用 bcp 将数据从该数据文件导入到SQL Server表。另外,bcp 还可以将数据从SQL Server实例复制到某个数据文件,其它程序可以从该数据文件中导入数据
19、。例如,若要将所有作者的姓名从 pubs 数据库的 publishers表复制到 c:Publishers.txt 文件,并按出版物名称排序,可在命令提示符下执行以下命令:bcp“SELECT pub_id,pub_name,city,state,country FROM ORDER BY pub_name”queryout c:Publishers.txt-c-Sservername-Usa Ppassword数据还可以从视图向外大容量复制。例如,将数据从 pubs 数据库的视图 titleview 复制到 Titleview.txt 数据文件,在命令提示符下执行以下命令:bcp out t
20、itleview.txt-c-Sservername-Usa-Ppassword若要将数据从 Publishers.txt 数据文件大容量复制到 pubs 数据库的 publishers 表中,在命令提示符下执行以下命令:bcp in publishers.txt-c-t,-Sservername-Usa-Ppassword-k,18.4 T-SQL语句,能够实现数据传输功能的Transact-SQL语句有BULK INSERT、SELECTINTO以及INSERTSELECT语句,这些语句在SQL Server查询分析器或者应用程序中执行。BULK INSERT能够实现将数据文件中的数据复制
21、到SQL Server数据库。使用SELECTINTO和INSERTSELECT能够实现将几个表和视图中数据插入到另外一张表。,18.4.1 使用BULK INSERT 语句,BULK INSERT语句以Transact-SQL语句而不是命令提示符来实现bcp实用工具的功能。使用BULK INSERT语句,可以将数据从数据文件传送到SQL Server表但不支持将数据从SQL Server实例复制到数据文件。在SQL Server查询分析器中使用BULK INSERT语句实现大容量复制数据:例程18.1:将c:publishers.txt文件中的数据复制到pubs数据库的Publishers表
22、中BULK INSERT pubs.publishers FROM c:publishers.txtWITH(DATAFILETYPE=char,FIELDTERMINATOR=,KEEPNULLS),18.4.2 使用SELECTINTO语句,SELECT INTO 语句创建一个新表,并用 SELECT 的结果集填充该表,新表的结构由选择列表中表达式的特性定义。例程18.2:查询Norhtwind数据库中Products表中的数据,然后将结果保存在Pubs数据库的NewProducts表。SELECT ProductName,CompanyName AS Suppliers,UnitPric
23、e AS Price,UnitsInStock AS Stock,UnitsOnOrder INTO FROM AS PINNER JOIN Suppliers AS S ON S.SupplierID=P.SupplierID由于SELECT INTO语句能够创建一张新表,因此常用来产生临时表或拷贝表结构。例程18.3,拷贝Employees表的结构到Employees_history表:SELECT*INTO Employees_historyFROM EmployeesWHERE EmployeeID IS NULLSELECTINTO可将几个表或视图中的数据组合成一个表,也可用于创建一
24、个包含选自链接服务器的数据的新表。例程18.4:在本地SQL Server(Server1)上建立与远程SQL Server(Server2)的链接服务器后,使用INSERTSELECT语句将SERVER2的Nortnwind数据库中Employees表的部分数据插入到本地Nortnwind数据库中Employees表。INSERT INTO(Lastname,Firstname)SELECT Lastname,FirstnameWHERE City=London,18.4.3 使用INSERT SELECT语句,INSERT语句中的SELECT子查询可用于将一个或多个其它的表或视图的值添加到
25、表中,使用SELECT子查询可同时插入多行。SELECT子查询的选择列表必须与INSERT语句列的列表和数据类型相匹配。例程18.5:使用的INSERT语句将 titles表中数据插入到一个单独的表(MyBooks)中:USE pubsINSERT INTO MyBooks(title_id,title,type)SELECT title_id,title,typeFROM titlesWHERE type=mod_cookINSERT.SELECT语句的另一个作用是从SQL Server的外部数据源插入数据。例程18.6:配置链接服务器连接到远程SQL Server(Server3),执行下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 数据传输
链接地址:https://www.31ppt.com/p-5449392.html