数据库导入导出技术

上传人:工**** 文档编号:487436710 上传时间:2022-08-05 格式:DOC 页数:20 大小:264KB
返回 下载 相关 举报
数据库导入导出技术_第1页
第1页 / 共20页
数据库导入导出技术_第2页
第2页 / 共20页
数据库导入导出技术_第3页
第3页 / 共20页
数据库导入导出技术_第4页
第4页 / 共20页
数据库导入导出技术_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数据库导入导出技术》由会员分享,可在线阅读,更多相关《数据库导入导出技术(20页珍藏版)》请在金锄头文库上搜索。

1、当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具 bcp处理数据;使用数据转换服务 (DTS)对数据进行处理。这三种方 法各有其特点,下面就它们的主要特点进行比较。一、使用方式的比较1. 使用Transact-SQL 进行数据导入导出我们很容易看出,Transact-SQL方法

2、就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而 INSERT INTO的功能是将源数据插入 到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。SELECT * INT

3、O table2 FROM tablel -tablel和 table2 的表结构相同INSERT INTO table2 SELECT * FROM table3 -table2 和 table3 的表结构相同当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是 OPENDATASOURCE 和OPENROWSET。它们的功 能基本上相同,不同之处主要有两点。(1) 调用方式不冋。OPENDATASOU

4、RCE 的参数有两个,分别是 OLE DB Provider 和连接字符串。使 用OPENDATASOURCE 只相当于引用数据库或者是服务(对于SQL Server、Oracle等数据库来说)。要想引用其中的数据表或视图,必须在OPENDATASOURCE(.J后进行引用。 在 SQL Server 中通过 OPENDATASOURCE 查询 Access 数据库 abc.mdb 中的 t able1 表SELECT * FROM OPENDATASOURCE(Microsoft.Jet.OLEDB.4Q,卩 rovider=Micr osoft .J et.OLEDB.4.O;Data S

5、ource=abc.mdb;Persist Security In fo=False )tablelOPENROWSET相当于一个记录集,可以将直接当成一个表或视图使用。在SQL Server 中通过 OPENROWSETE 查询 Access 数据库 abc.mdb 中的 tablel 表SELECT * FROM OPENROWSET(Microsoft .J et.OLEDB.4.O,abc.mdb;admi n;”,SELECT * FROM tablel)(2) 灵活度不同。OPENDATASOURCE只能打开相应数据库中的表或视图,如果需要过滤的话,只能在SQL Server中进行

6、处理。而 OPENROWSET可以在打开数据库的同时对其进行过滤, 如上面的例子,在OPENROWSET 中可以使用 SELECT * FROM tablel 对abc.mdb 中 的数据表进行查询,而OPENDATASOURCE 只能引用tablel ,而无法查询tablel 。因此, OPENROWSET 比较 OPENDATASOURCE 更加灵活。2. 使用命令行bcp导入导出数据很多大型的系统不仅仅提供了友好的图形用户接口,同时也提供了命令行方式对系统进行控制。在SQL Server中除了可以使用SQL语句对数据进行操作外,还可以使用一个命 令行工具bcp对数据进行同样的操作。bcp

7、 是基于 DB-Library客户端库的工具。它的功能十分强大,bcp能够以并行方式将数据从多个客户端大容量复制到单个表中,从而大大提高了装载效率。但在执行并行操作时要注意的是只有使用基于ODBC或SQL OLE DB的API的应用程序才可以执行将数据并行装载到单个表中的操作。bcp可以将SQL Server中的数据导出到任何 OLE DB所支持的数据库的,如下面 的语句是将 authors 表导出到 excel文件中bcp pubs.dbo.authors out c:temp1.xls -c -q -SGNETDATA/GNETDATA -Usa -Ppasswordbcp不仅能够通过命令

8、行执行,同时也可以通过SQL执行,这需要一个系统存储过程xp_cmdshell来实现,如上面的命令可改写为如下形式。EXEC master.xp_cmdshell bcp pubs.dbo.authors outc:temp1.xls -c -q -SGNETDATA/GNETDATA -Usa -Ppassword3. 使用数据转换服务(DTS)导入导出数据DTS是SQL Server中导入导出数据的核心, 它除有具有SQL和命令行工具bcp相 应的功能外,还可以灵活地通过VBScript、JScript等脚本语言对数据进行检验、净化和转换。SQL Server为DTS提供了图形用户接口,

9、用户可以使用图形界面导入导出数据,并对数据进行相应的处理。同时,DTS还以com组件的形式提供编程接口,也就是说任何支持com组件的开发工具都可以利用com组件使用DTS所提供的功能。DTS在SQL Server中可以保存为不同的形式,可以是包的形式,也可以保存成 Visual Basic源程序文件,这样只要在VB中编译便可以使用 DTS com组件了。DTS和其它数据导入导出方式最大的不同就是它可以在处理数据的过程中对每一行数据进行深度处理。以下是一段VBScript代码,这段代码在处 DTS理每一条记录时执行,DTSDestination表示目标记录,DTSSource 表示源记录,在处理

10、婚姻状况时,将源记录中的 婚姻状况”中的0或1转换成目标记录中已婚”或 朱婚”Function Mai n()DTSDestination(姓名)=DTSSource( 姓名)DTSDestination(年龄)=DTSSource( 年龄)If DTSDestination(婚姻状况)=1 ThenDTSDestination( 婚姻状况)=已婚ElseDTSDestination( 婚姻状况)= 未婚End IfMain = DTSTra nsformStat_OKEnd Fun cti on1如示。上述的三种数据导入导出方法各有其利弊,它们之间的相互比较如图二、性能的比较使用Transa

11、ct-SQL方式。如果是SQL Server数据库之间的导入导出,速度将非常快,但是使用 OPENDATASOURCE 和 OPENROWSET 方法利用 OLE DB Provider 打开 并操作数据库时速度会慢一些。使用bcp命令方式。如果不需要对数据进行验证等操作的话,使用它还是非常快的,这是因为它的内部使用c接口的DB-library ,所以在操作数据库时速度有很大的提升。使用DTS方式导数据应该是最好的方式了。由于它整合了 MicrosoftUniversalData Access技术与Microsoft ActiveX 技术,因此不仅可以灵活地处理数据,而且在数据导入导出的效率是

12、非常高的。总结SQL Server提供了丰富的数据导入导出方法,这给我们提供了更多的选择,但是这 又会给我们带来一个新问题: 如何根据具体情况选择合适的数据导入导出方法呢?我在这里 提供一些个人的建议,希望能对读者起到一定的指导作用。如果是在SQL Server数据库之间进行数据导入导出时,并且不需要对数据进行复杂 的检验,最好使用 Transact-SQL 方法进行处理,因为在 SQL Server数据库之间进行数 据操作时,SQL是非常快的。当然,如果要进行复杂的操作,如数据检验、转换等操作时, 最好还是使用 DTS进行处理,因为 DTS不光导数据效率高,而且能够对数据进行深度控 制。但是

13、DTS的编程接口是基于 com的,并且这个接口十分复杂,因此,使用程序调用 DTS将变也会变得很复杂,因此,当数据量不是很大,并且想将数据导入导出功能加入到 程序中,而且没有复杂的数据处理功能时,可以使用OPENDATASOURCE 或OPENROWSET进行处理。bcp命令并不太适合通过程序来调用,如果需要使用批量的方式导数据,可以通过批 处理文件调用bcp命令,这样做即不需要编写大量的程序,也无需在企业管理器中通过各 种操作界面的切换来进行数据导入导出。因此,它比较适合在客户端未安企业管理器或使用SQL Server Express时对数据进行快速导入导出的场合。(2 )插入多个元素到文档

14、中在下面的示例中,将 title和author元素插入到了 item 节点中。元素之间使用逗号 分隔,并包含在括号中。1DECLARE myDoc xmlSET myDoc = v/itemv/rootSELECT myDocSET myDoc.modify(in sert (SQL Server 2005开发宝典 , 张洪举 )into (/root/item)1);SELECT myDocGO(3) 插入属性到文档中在下面的示例中,向XML文档中插入了多个属性。每次插入属性后,SELECT语句都会显示结果,最终执行结果如图2所示。DECLARE myDoc xmlSET myDoc = Ajax实战 张洪举 SELECT myDocSET myDoc.modify(insert attribute ShipTo 广州into (/root/itemID=1)1);SELECT myDoc-通过一个sql变量指定要插入属性ShipDate的值DECLARE ShipDate char(11)SET ShipDate=2006-01-23ZSET myDoc.modify(in sert attribute ShipDate sql:variable(ShipDate)cast as xs:date ?into (/root/itemID=1)1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号