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

SQL Server 大量資料匯入四大策略:SELECT INTO、Excel 中介、DTS/SSIS、異構資料庫 OPENROWSET

     編輯:關於SqlServer

專案實施中資料匯入常見四種策略,依資料來源、量級、轉換複雜度選擇。

策略一:SELECT INTO / INSERT INTO(同質 SQL Server)

-- 建立目標表結構 (不含索引)
SELECT * INTO TargetDB.dbo.M_Product 
FROM SourceDB.dbo.Product WHERE 1=0;

-- 匯入資料
INSERT INTO TargetDB.dbo.M_Product (col1, col2, ...)
SELECT col1, col2, ... FROM SourceDB.dbo.Product;
  • 優點:語法簡單、效能高、跨版本相容 (2000/2005/2008/2012/2016/2019)。
  • 缺點:不複製索引/約束/觸發器;目標表必須為空 (SELECT INTO) 或配合 INSERT INTO 合併。

策略二:Excel/CSV 中介(人工清洗、異構來源)

  1. 來源匯出 CSV/Excel (Oracle 用 SQL Developer、MySQL 用 Workbench)。
  2. Excel 進行:排序去重、取代異常字元、欄位型別修正、刪除廢棄列。
  3. SSMS → 資料庫右鍵 → 工作 → 匯入資料 → 選擇 Excel/平面檔案來源 → 對應欄位 → 執行。
  • 優點:直觀、易驗證、非技術人員可參與清洗。
  • 缺點:Excel 104 萬列限制、大量資料開啟緩慢、需人工介入。

策略三:DTS (SQL 2000) / SSIS (SQL 2005+) 封裝

  • 圖形化設計:資料流任務、轉換元件 (衍生欄位、查閱、條件分割)、錯誤輸出導向。
  • 程式化介面:COM/Managed API,前端應用可呼叫封裝執行,預先驗證/轉換資料。
  • 優點:效能最強 (平行處理)、支援複雜 ETL、可版本控管、生產環境標準。
  • 缺點:學習曲線陡峭、封裝部署/環境設定較繁瑣。

策略四:異構資料庫 OPENROWSET / OPENDATASOURCE

-- OPENDATASOURCE:僅開啟連結,無法過濾
SELECT * INTO LocalDB.dbo.Target
FROM OPENDATASOURCE('SQLOLEDB','Data Source=RemoteSVR;User ID=u;Password=p').RemoteDB.dbo.Source;

-- OPENROWSET:支援 WHERE 過濾
SELECT * INTO LocalDB.dbo.Target
FROM OPENROWSET('SQLOLEDB','Data Source=RemoteSVR;User ID=u;Password=p',
                'SELECT col1,col2 FROM RemoteDB.dbo.Source WHERE status=1');
  • 優點:Ad-hoc 查詢、無需建立連結伺服器。
  • 缺點:參數複雜、無內建驗證/轉換、大量資料效能遜於 SSIS、安全性風險 (明文密碼)。

選擇決策樹

  1. 來源 = SQL Server、結構相容、無需清洗 → 策略一。
  2. 需人工清洗、來源非 SQL Server、資料量 < 100 萬列 → 策略二。
  3. 定期排程、複雜轉換、企業級專案 → 策略三 (SSIS)。
  4. 一次性 Ad-hoc、跨伺服器小量同步 → 策略四。

最佳實務建議

  • 匯入前先在測試環境 驗證行數、檢查約束、比對檢查和。
  • 大量匯入時:暫停索引/約束 → 匯入 → 重建索引/啟用約束,大幅提升速度。
  • 使用 BULK INSERT / bcp 原生模式 (-n) 達到最高吞吐量。
  • 記錄匯入日誌 (筆數、耗時、錯誤樣本) 供稽核追蹤。

依專案情境選擇適當策略,並建立標準化匯入 SOP,確保資料品質與作業效率。

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