使用 PL/SQL Developer 的「ODBC 導入器」將 Excel 數據導入 Oracle 表,所有目標欄位均為 VARCHAR2,長度足夠,但提示「導入出錯」,數據包含中文與標點符號。
ODBC 驅動程式(Microsoft Excel Driver)會掃描前幾行數據「猜測」欄位類型。若前 8 行純數字,驅動將該欄判定為數值型;後續出現文字即導致類型不匹配報錯。即使目標表為 VARCHAR2,驅動在讀取階段已將文字截斷或轉為 NULL。
「分列 → 文本」強制將儲存格格式設為 @(文本),Excel 會在儲存格值前加入隱藏前綴 ',ODBC 驅動讀取時識別為字符串,不再嘗試數值轉換,完美匹配目標 VARCHAR2。
YYYY-MM-DD HH24:MI:SS,導入後用 TO_DATE 轉換。| 工具 | 優點 | 缺點 |
|---|---|---|
| PL/SQL ODBC 導入器 | 圖形化、無需編碼 | 易受 Excel 格式影響、大數據慢 |
| SQL*Loader + CSV | 高性能、穩定、可腳本化 | 需編寫控制文件 |
| Python pandas + cx_Oracle | 靈活預處理、複雜邏輯易實現 | 需開發環境 |
PL/SQL 導入 Excel 報錯 90% 由驅動類型推斷引起。「數據 → 分列 → 文本」是零成本、即時生效的黃金修復法。養成「導入前全欄轉文本」的肌肉記憶,告別莫名其妙的類型錯誤。