SQLServer中数据导入导出三种方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当我们建⽴⼀个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进⾏数据检验、净化和转换时,将会⾯临很⼤的挑战。

幸好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(...)后进⾏引⽤。

在SQL Server中通过OPENDATASOURCE查询Access数据库abc.mdb中的table1表
以下是引⽤⽚段:
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;Persist Security
Info=False')...
table1
OPENROWSET相当于⼀个记录集,可以将直接当成⼀个表或视图使⽤。

在SQL Server中通过OPENROWSETE查询Access数据库abc.mdb中的table1表
以下是引⽤⽚段:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'abc.mdb';
'admin';'','SELECT * FROM table1')。

相关文档
最新文档