首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料匯入匯出三大方式詳解(一):T-SQL 與 OPENROWSET

     編輯:關於SqlServer

SQL Server 提供三大類資料移動手段:T-SQL 指令、BCP 命令列工具、DTS/SSIS 服務。本文聚焦 T-SQL 方法,涵蓋同質與異質資料源。

同質資料庫(SQL Server 之間)

-- 建新表並複製結構+資料(不含索引/約束)
SELECT * INTO table2 FROM table1;

-- 追加資料到既有表(結構需相容)
INSERT INTO table2 SELECT * FROM table3;

-- 更新既有資料
UPDATE t2 SET col = t3.col FROM table2 t2 JOIN table3 t3 ON t2.id = t3.id;

異質資料庫(OLE DB Provider)

SQL Server 透過 OPENDATASOURCE 與 OPENROWSET 即時連接外部資料源(Access、Excel、Oracle、文字檔等)。

OPENDATASOURCE:伺服器級連接

SELECT * FROM OPENDATASOURCE(
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source=C:\data\abc.mdb;User ID=Admin;Password='
)...table1;
  • 兩個參數:Provider 名稱、連接字串。
  • 回傳「連結伺服器」參考,需再以 ...table_name 指定資料表。

OPENROWSET:即席資料列集(更靈活)

SELECT * FROM OPENROWSET(
    'Microsoft.Jet.OLEDB.4.0',
    'C:\data\abc.mdb'; 'Admin'; '',
    'SELECT * FROM table1');
  • 四個參數:Provider、資料源路徑、使用者、密碼、SQL 查詢字串。
  • 直接當作資料表使用,可 JOIN、WHERE、INSERT INTO ... SELECT * FROM OPENROWSET(...)。

兩者差異速查

特性OPENDATASOURCEOPENROWSET
用途臨時連結伺服器即席分散式查詢
參數數24
可直接 JOIN需先建立連結伺服器參考是,像本地表一樣
適合場景重複存取同一外部源一次性、動態 SQL、跨庫聯查

啟用條件

  • 執行 sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE;
  • 目標機器安裝對應 OLE DB Provider(如 Access 需 Jet 4.0、Excel 需 ACE 12.0)。
  • 權限:執行者需 sysadmin 或 OPENROWSET 權限。

下篇預告

BCP 高效批量匯出匯入、格式檔、錯誤處理、SSIS 視覺化 ETL 流程設計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved