專案實施中資料導入常是痛點。SQL Server 內建多種批量導入機制,本文對比三大主流法:同質庫間 SELECT INTO、異構/髒資料 Excel 中轉、企業級 SSIS 封裝,分析適用場景、優缺點與操作要點。
SELECT * INTO TargetDB.dbo.M_Product
FROM SourceDB.dbo.Product;
INSERT INTO TargetDB.dbo.M_Product (Col1, Col2, ...)
SELECT Col1, Col2, ... FROM SourceDB.dbo.Product;
INT → FLOAT)。WHERE NOT EXISTS 避免重複。SELECT * INTO TargetDB.dbo.NewTable
FROM SourceDB.dbo.SourceTable
WHERE 1 <> 1; -- 或 TOP 0
EXEC sp_addlinkedserver
@server = 'Excel',
@srvproduct = 'ex',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@datasrc = 'C:\path\abc.xls',
@provstr = 'Excel 5.0';
EXEC sp_addlinkedsrvlogin 'Excel', 'false', 'sa', 'Admin', NULL;
SELECT * FROM Excel...Sheet1$; -- 直接查詢工作表
-- 用畢移除
EXEC sp_dropserver 'Excel';
注意:Excel 檔案被開啟時無法查詢;資料前後勿有空格;檔名路徑建議固定。
| 場景 | 推薦方法 | 理由 |
|---|---|---|
| SQL Server 到 SQL Server,一次性全量同步 | SELECT INTO + 手工補索引 | 最快、無需額外工具 |
| SQL Server 到 SQL Server,增量/合併 | INSERT INTO + MERGE / WHERE NOT EXISTS | 支援 UPSERT 邏輯 |
| 異構來源 (Oracle, MySQL, 檔案),需清洗/業務確認 | Excel/CSV 中轉 | 直觀、業務人員可參與驗收 |
| 生產環境定時 ETL、複雜轉換、錯誤隔離、審計追蹤 | SSIS 封裝 | 企業級標準、可維運、可版控 |
沒有銀彈,只有適合當下場景的工具。掌握三大法,從一次性腳本到企業級 ETL 皆可游刃有餘。建議團隊建立「資料導入 SOP」:來源分類 → 方法選擇 → 驗證清單 → 回滾預案,將導入風險降至最低。