SQL Server中匯入匯出資料三方法比較

2021-06-07 19:43:07 字數 2115 閱讀 9806

當我們建立乙個資料庫時,並且想將分散在各處的不同型別的資料庫分類彙總在這個新建的資料庫中時,尤其是在進行資料檢驗、淨化和轉換時,將會面臨很大的挑戰。幸好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')

(2) 靈活度不同。

opendatasource只能開啟相應資料庫中的表或檢視,如果需要過濾的話,只能在sql server中進行處理。而openrowset可以在開啟資料庫的同時對其進行過濾,如上面的例子,在openrowset中可以使用select * from table1對abc.mdb中的資料表進行查詢,而opendatasource只能引用table1,而無法查詢table1。因此,openrowset比較opendatasource更加靈活。

2. 使用命令列bcp匯入匯出資料

很多大型的系統不僅僅提供了友好的圖形使用者介面,同時也提供了命令列方式對系統進行控制。在sql server中除了可以使用sql語句對資料進行操作外,還可以使用乙個命令列工具bcp對資料進行同樣的操作。bcp是基於db-library 客戶端庫的工具。它的功能十分強大,bcp能夠以並行方式將資料從多個客戶端大容量複製到單個表中,從而大大提高了裝載效率。但在執行並行操作時要注意的是只有使用基於 odbc 或 sql ole db 的 api 的應用程式才可以執行將資料並行裝載到單個表中的操作

ORACLE中匯入匯出總結

下面介紹的是匯入匯出的例項。資料匯出 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp system manager test file d daochu.dmp full y 2 將資料庫中system使用者與sys使用者的表匯出 ...

MySQL中匯入 匯出CSV

來自 匯出select from test info into outfile tmp test.csv fields terminated by optionally enclosed by escaped by lines terminated by r n 匯入load data infile...

c 中匯入 匯出Excel表

c 匯入 匯出excel 新建乙個專案,新增web引用 這個web服務就只是返回dataset資料而已 要使用excel,需加的命名空間 using microsoft.office.interop.excel using system.reflection using system.io 需新增引...