SQL Server 中导入导出数据三方法比较
当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个
新建的数据库 中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好
SQL Server 为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以
对数据进行灵活的处理。
在 SQL Server 中主要有三种方式导入导出数据:使用 Transact-SQL 对数据进行处
理;调用命令行工具 BCP 处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方
法各有其特点,下面就它们的主要特点进行比较。
一、使用方式的比较
1. 使用 Transact-SQL 进行数据导入导出
我们很容易看出,Transact-SQL 方法就是通过 SQL 语句方式将相同或不同 类型的
数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的 SQL Server 数据
库之间进行数据导入导出,那将是非常容易做到的。一般可使用 SELECT INTO FROM 和
INSERT INTO。使用 SELECT INTO FROM 时 INTO 后跟的表必须存在,也就是说它的功
能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相
当于表的复制(并 不会复制表的索引等信息)。而 INSERT INTO 的功能是将源数据插入
到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用
UPDATE。
SELECT * INTO table2 FROM table1 --table1 和
table2 的表结构相同
INSERT INTO table2 SELECT * FROM table3 --table2 和
table3 的表结构相同
当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是
如何打开非 SQL Server 数据库的问题。
在 SQL Server 中提供了两个函数可以根据各种类型数据库的 OLE DB Provider 打
开并操作这些数据库,这两个函数是 OPENDATASOURCE 和 OPENROWSET。它们的功
能基本上相同,不同之处主要有两点。
(1) 调用方式不同。
OPENDATASOURCE 的参数有两个,分别是 OLE DB Provider 和连接字符串。使
用 OPENDATASOURCE 只相当于引用数据库或者是服务(对于 SQL Server、Oracle 等
数据库来说)。要想引用其中的数据表或视图,必须在 OPENDATASOURCE(...)后进行
引用。
评论0