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

SQL Server 大量資料導入實戰三大法:SELECT INTO、Excel 中轉、SSIS 封裝

     編輯:關於SqlServer

前言

專案實施中資料導入常是痛點。SQL Server 內建多種批量導入機制,本文對比三大主流法:同質庫間 SELECT INTO、異構/髒資料 Excel 中轉、企業級 SSIS 封裝,分析適用場景、優缺點與操作要點。

方法一:SELECT INTO / INSERT INTO (同質 SQL Server 庫)

SELECT INTO

SELECT * INTO TargetDB.dbo.M_Product 
FROM SourceDB.dbo.Product;
  • 自動建立目標表結構 (含身分識別、預設值、Nullable),不複製索引、外鍵、觸發器、檢查約束。
  • 目標表必須**不存在**,否則報錯。
  • 適用:初次建表同步、結構同步後再手工補索引。

INSERT INTO (表已存在,需合併資料)

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

方法二:Excel / CSV 中轉 (異構來源、資料清洗、業務確認)

流程

  1. 來源匯出 → Excel/CSV (Oracle 等無直連 Excel 時用 CSV)。
  2. Excel 清洗:排序刪除廢棄列、替換不規範字元、VLOOKUP 補齊代碼、樞紐分析驗證。
  3. SSMS → 右鍵資料庫 → 工作 → 匯入資料 → 選擇 Excel/CSV 來源 → 對應目標表 → 執行。

Excel 連結伺服器即時查詢 (進階)

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 檔案被開啟時無法查詢;資料前後勿有空格;檔名路徑建議固定。

方法三:SSIS 封裝 (企業級、排程、錯誤處理、增量載入)

  • 視覺化設計資料流:來源 → 轉換 (衍生欄位、查閱、條件分割) → 目的地。
  • 支援交易、檢查點重啟、錯誤輸出導向、參數化部署 (專案部署模型)。
  • SQL Server Agent 排程自動執行,完整記錄與警報。

選型決策表

場景推薦方法理由
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」:來源分類 → 方法選擇 → 驗證清單 → 回滾預案,將導入風險降至最低。

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