SQL Server 提供三大類資料移動手段:T-SQL 指令、BCP 命令列工具、DTS/SSIS 服務。本文聚焦 T-SQL 方法,涵蓋同質與異質資料源。
-- 建新表並複製結構+資料(不含索引/約束)
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;
SQL Server 透過 OPENDATASOURCE 與 OPENROWSET 即時連接外部資料源(Access、Excel、Oracle、文字檔等)。
SELECT * FROM OPENDATASOURCE(
'Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\data\abc.mdb;User ID=Admin;Password='
)...table1;
...table_name 指定資料表。SELECT * FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'C:\data\abc.mdb'; 'Admin'; '',
'SELECT * FROM table1');
JOIN、WHERE、INSERT INTO ... SELECT * FROM OPENROWSET(...)。| 特性 | OPENDATASOURCE | OPENROWSET |
|---|---|---|
| 用途 | 臨時連結伺服器 | 即席分散式查詢 |
| 參數數 | 2 | 4 |
| 可直接 JOIN | 需先建立連結伺服器參考 | 是,像本地表一樣 |
| 適合場景 | 重複存取同一外部源 | 一次性、動態 SQL、跨庫聯查 |
sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE;sysadmin 或 OPENROWSET 權限。BCP 高效批量匯出匯入、格式檔、錯誤處理、SSIS 視覺化 ETL 流程設計。