付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教你在SQL Server数据库中导入导出数据 在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个 新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同 时可以对数据进行灵活的处理。在SQL Server中主要有三种方式导入导出数据:使用 Transact-SQL对数据进行处理; 调用命令行工具 BCP处理数据;使用数据转换服务 (DTS)对数据进行处理。这三种方 法各有其特点,下面就它们的主要特点进行比较。一、使用方式的比较1.使用Transact-SQL进行数据
2、导入导出我们很容易看出,Transact-SQL方法就是通过 SQL语句方式将相同或不同类型的数据 库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用 SELECT INTO FROM 时INTO后跟的表必须存在,也就是说 它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表 中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已
3、经存在的 记录,可以使用 UPDATE。SELECT * INTO table2 FROM tablel-tablel和table2的表结构相同INSERT INTO table2 SELECT * FROM table3-table2和table3的表结构相同当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是 如何打开非SQL Server数据库的问题。在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库, 这两个函数是 OPENDATASOURCE和OPENROWSET。它们的功能 基本上相同,不同之处主要
4、有两点。(1)调用方式不同。OPENDATASOURCE 的参数有两个,分别是OLE DB Provider和连接字符串。使用OPENDATASOURCE只相当于引用数据库或者是服务(对于SQL Server、Oracle等数据库来说)。要想引用其中的数据表或视图,必须在 OPENDATASOURCE(.J后进行引用。在 SQL Server 中通过 OPENDATASOURCE 查询 Access数据库 abc.mdb 中的 tablel 表SELECT * FROM OPENDA TASOURCE('Microsoft.Jet.OLEDB.4.0','Provide
5、r=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;Persist Security In fo=False').tablelOPENROWSET相当于一个记录集,可以将直接当成一个表或视图使用。在 SQL Server 中通过 OPENROWSETE 查询 Access 数据库 abc.mdb 中的 tablel 表SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'abc.mdb''admin''','SELECT *
6、 FROM tablel')(2)灵活度不同。OPENDATASOURCE只能打开相应数据库中的表或视图,如果需要过滤的话,只能在SQL Server中进行处理。而 OPENROWSET可以在打开数据库的同时对其进行过滤, 如上面的例子,在 OPENROWSET中可以使用 SELECT * FROM tablel 对abc.mdb中 的数据表进行查询,而 OPENDATASOURCE只能引用tablel,而无法查询tablel。因 此,OPENROWSET 比较 OPENDATASOURCE 更加灵活。2.使用命令行BCP导入导出数据很多大型的系统不仅仅提供了友好的图形用户接口,同时也
7、提供了命令行方式对系统 进行控制。在SQL Server中除了可以使用 SQL语句对数据进行操作外, 还可以使用一 个命令行工具BCP对数据进行同样的操作。BCP是基于DB-Library客户端库的工具。 它的功能十分强大,BCP能够以并行方式将数据从多个客户端大容量复制到单个表中, 从而大大提高了装载效率。但在执行并行操作时要注意的是只有使用基于ODBC或SQL OLE DB的API的应用程序才可以执行将数据并行装载到单个表中的操作。BCP可以将SQL Server中的数据导出到任何 OLE DB所支持的数据库的,如下面的语 句是将authors表导出到 excel文件中。bcp pubs.
8、dbo.authors out c:temp1.xls-c -q -S"GNETDATA/GNETDA TA" -U"sa" -P"password"BCP不仅能够通过命令行执行,同时也可以通过 SQL执行,这需要一个系统存储过程 xp_cmdshell来实现,如上面的命令可改写为如下形式。EXEC master.xp_cmdshell 'bcp pubs.dbo.authors outc:temp1.xls -c -q -S"GNETDA TA/GNETDA TA" -U"sa" -P
9、"password"'3.使用数据转换服务(DTS)导入导出数据DTS是SQL Server中导入导出数据的核心,它除有具有SQL和命令行工具 BCP相应的功能外,还可以灵活地通过VBScript、JScript等脚本语言对数据进行检验、净化和转换。SQL Server为DTS提供了图形用户接口,用户可以使用图形界面导入导出数据,并对 数据进行相应的处理。同时,DTS还以com组件的形式提供编程接口,也就是说任何支持com组件的开发工具都可以利用com组件使用DTS所提供的功能。DTS在SQLServer中可以保存为不同的形式,可以是包的形式, 也可以保存成 Vis
10、ual Basic源程序文件,这样只要在 VB中编译便可以使用 DTS com组件了。DTS和其它数据导入导出方式最大的不同就是它可以在处理数据的过程中对每一行数 据进行深度处理。以下是一段VBScript代码,这段代码在处 DTS理每一条记录时执行,DTSDestination表示目标记录,DTSSource表示源记录,在处理“婚姻状况”时, 将源记录中的“婚姻状况”中的0或1转换成目标记录中“已婚”或“未婚”。Function Mai n()DTSDestination("姓名")=DTSSource("姓名") DTSDestination(” 年
11、龄")=DTSSource("年龄") If DTSDestination("婚姻状况")=1 ThenDTSDestination("婚姻状况")="已婚"ElseDTSDestination("婚姻状况")="未婚"End IfMain = DTSTra nsformStat_OKEnd Function1如示。上述的三种数据导入导出方法各有其利弊,它们之间的相互比较如图<>B二、性能的比较 使用 Transact-SQL 方式。如果是 SQL Se
12、rver 数据库之间的导入导出,速度将非常快, 但是使用 OPENDATASOURCE 和 OPENROWSET 方法利用 OLE DB Provider 打开并 操作数据库时速度会慢一些。使用 BCP 命令方式。如果不需要对数据进行验证等操作的话,使用它还是非常快的, 这是因为它的内部使用 c 接口的 DB-library ,所以在操作数据库时速度有很大的提升。使用 DTS 方式导数据应该是最好的方式了。由于它整合了 Microsoft Universal Data Access 技术与 Microsoft ActiveX 技术,因此不仅可以灵活地处理数据,而且在数据导 入导出的效率是非常高
13、的。总结SQL Server 提供了丰富的数据导入导出方法,这给我们提供了更多的选择,但是这又 会给我们带来一个新问题:如何根据具体情况选择合适的数据导入导出方法呢?我在 这里提供一些个人的建议,希望能对读者起到一定的指导作用。如果是在 SQL Server 数据库之间进行数据导入导出时,并且不需要对数据进行复杂的 检验,最好使用 Transact-SQL 方法进行处理,因为在 SQL Server 数据库之间进行数据 操作时 ,SQL 是非常快的。 当然, 如果要进行复杂的操作, 如数据检验、 转换等操作时, 最好还是使用 DTS 进行处理,因为 DTS 不光导数据效率高,而且能够对数据进行深 度控制。 但是 DTS 的编程接口是基于 com 的,并且这个接口十分复杂,因此,使用程 序调用 DTS 将变也会变得很复杂,因此 , 当数据量不是很大,并且想将数据导入导出 功能加入到程序中, 而且没有复杂的数据处理功能时, 可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏盐城市响水县部分高中赴淮阴师范学院招聘教师25人笔试备考试题及答案详解
- 2026山东东营广饶县医疗卫生事业单位招聘工作人员21人笔试备考题库及答案详解
- 2026江苏南京大学YJ20260126物理学院博士后招聘1人笔试参考试题及答案详解
- 2026年山东省财金投资集团有限公司社会招聘(20人)笔试参考试题及答案详解
- 2026四川省绵阳高级技工学校崇州校区体育教师招聘笔试参考题库及答案详解
- 成都市农业农村局所属事业单位2026年公开考试招聘工作人员(7人)笔试参考试题及答案详解
- 2026中国中医药出版社招聘10人笔试备考试题及答案详解
- 2026重庆飞驶特人力资源管理有限公司招聘35人笔试备考题库及答案详解
- 成都市成华区卫健系统所属事业单位2026年上半年公开考试招聘工作人员(9人)笔试备考题库及答案详解
- 2026届山东省泰安市泰山外国语校中考英语适应性模拟试题含答案
- 2026年天津市高三高考二模英语模拟试卷试题(含答案详解)
- 北京市西城区2026年高三一模英语试卷(含答案)
- 《华为OLT产品介绍》课件
- 2025年中考英语专题-阅读六选五解题策略教学设计
- ZPW-2000A型无绝缘移频自动闭塞系统说明书
- 10S505 柔性接口给水管道支墩
- SYT 0452-2021 石油天然气金属管道焊接工艺评定-PDF解密
- 四年级下册劳动教育全册教学课件
- 日本的大化改新(课件)
- 影响我最大的一个人作文讲评
- 装饰装修项目技术标文件
评论
0/150
提交评论