在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。
從表1中選擇*進入表2
-表1和表2具有相同的表結構。
插入表2從表3中選擇*
-表2和表3具有相同的表結構。
在異構數據庫之間導入和導出數據時,情況會變得復雜得多。首先要解決的問題是如何打開非SQL Server數據庫。
SQL Server中提供了兩個函數,用於根據OLE DB訪問接口打開和操作各種類型的數據庫。這兩個函數是OPENDATASOURCE和OPENROWSET。它們的功能基本相同,主要有兩個區別。
(1)的調用方式不同。
OPENDATASOURCE有兩個參數,即OLE DB Provider和連接字符串。使用OPENDATASOURCE只等同於引用數據庫或服務(對於SQL Server、Oracle等數據庫)。如果要引用數據表或視圖,必須在OPENDATASOURCE(...).
在SQL Server中通過OPENDATASOURCE查詢Access數據庫的abc.mdb中的table1表。
SELECT * FROM open data source(' Microsoft。Jet.OLEDB.4.0 ',
提供商=微軟。Jet . OLEDB.4.0數據源= abc.mdb持續安全性
info = False’)...
表1
OPENROWSET相當於壹個記錄集,可以直接用作表或視圖。
在SQL Server中通過OPENROWSETE查詢Access數據庫的abc.mdb中的table1表。
SELECT * FROM OPENROWSET(' Microsoft。Jet.OLEDB.4.0 ',' ABC . MDB ';
admin ';',' SELECT * FROM table1 ')