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

Excel 資料導入 SQL Server 兩大方案實戰:MySQL for Excel vs SQL 腳本直導

     編輯:關於SqlServer

業務場景

  • 目標表 A (SQL Server) 已有結構與資料
  • Excel B:ID 對照 Name 映射表
  • Excel C (N 張):同結構明細,無 ID 欄
  • 任務:用 B 為 C 補齊 ID → 依 ID 更新 A

方案一:MySQL for Excel 外掛 (嘗試失敗)

  • Excel 內直接連 MySQL/SQL Server,像編輯表格一樣操作資料庫
  • 支援表合併、資料同步
  • 實測痛點:本地連線正常,遠端伺服器連線頻繁失敗 (防火牆、權限、驅動版本)
  • 結論:不適合生產環境跨網段操作

方案二:Excel 先導入資料庫,再用 SQL 處理 (推薦)

關鍵前置處理

  1. 手機號/長數字欄位 → 設為「文字」格式,防止科學記號/截斷
  2. 統一繁體/簡體,避免編碼不匹配
  3. 清理空格、不可見字元:TRIM()、CLEAN()

導入步驟

  1. SSMS → 目標資料庫右鍵 → 工作 → 匯入資料
  2. 資料來源:Microsoft Excel (或 ACE OLEDB)
  3. 目的地:SQL Server Native Client
  4. 將 B、C 表分別導入暫存表 #Map、#Detail

核心 SQL 處理邏輯

-- 1. 為明細補齊 ID
UPDATE d
SET d.ID = m.ID
FROM #Detail d
JOIN #Map m ON m.Name = d.Name;  -- 假設 Name 唯一

-- 2. 依 ID 更新目標表 A
UPDATE A
SET A.Col1 = d.Col1, A.Col2 = d.Col2, ...
FROM A
JOIN #Detail d ON A.ID = d.ID;

大資料量優化

  • 暫存表加索引:CREATE INDEX idx_name ON #Detail(Name)
  • 分批更新:TOP (5000) 循環,避免長鎖、Log 爆漲
  • 最小日誌:BULK INSERT 或 SqlBulkCopy 導入暫存表

方案對比總結

維度MySQL for ExcelSQL 腳本直導
遠端穩定性❌ 差✅ 佳
可重複/自動化❌ 手工✅ 腳本化/排程
資料清洗能力⚠️ 弱✅ SQL 全功能
效能⚠️ 受限 Excel✅ 批量/並行
推薦指數⭐⭐⭐⭐⭐⭐⭐
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved