面對異構資料整合、淨化、轉換,SQL Server 提供三種核心匯入匯出方式:
SELECT INTO (建表+複製)、INSERT INTO ... SELECT (合併)、UPDATE (同步)OPENDATASOURCE、OPENROWSET 透過 OLE DB Provider 存取
| 函數 | 參數 | 彈性 | 範例 |
|---|---|---|---|
| OPENDATASOURCE | Provider, 連接字串 | 僅引用資料庫/伺服器,後接物件名 | SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','...')...table1 |
| OPENROWSET | Provider, 連接字串, SQL | 可在函數內過濾/查詢,視同 Recordset | SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','abc.mdb','admin','','SELECT * FROM table1') |
bcp pubs.dbo.authors out c:\temp\authors.xls -c -q -S"SERVER" -U"sa" -P"pwd"xp_cmdshell 在 SQL 中呼叫Function Main()
DTSDestination("姓名") = DTSSource("姓名")
If DTSSource("婚姻狀況") = 1 Then
DTSDestination("婚姻狀況") = "已婚"
Else
DTSDestination("婚姻狀況") = "未婚"
End If
Main = DTSTransformStat_OK
End Function
| 維度 | T-SQL | BCP | DTS/SSIS |
|---|---|---|---|
| 同質 SQL Server 速度 | 極快 | 快 | 快 |
| 異質資料庫速度 | 中等 | 快 | 快 |
| 資料驗證/轉換 | 弱 | 無 | 極強 |
| 程式化呼叫 | 容易 | 困難 (需 xp_cmdshell) | 複雜 (COM 介面) |
| 視覺化開發 | 無 | 無 | 完整 |
| 適用場景 | 簡單同質/輕量異質 | 大量匯入匯出、無驗證需求 | 複雜 ETL、資料清洗、異質整合 |
依資料量、轉換複雜度、部署環境選擇最適方式,必要時組合使用 (如 SSIS 呼叫 BCP、T-SQL 觸發 SSIS)。