適用場景
中小型專案、部門級資料庫、原型驗證,需快速將 Access (.mdb/.accdb) 資料移至 Oracle,或反向導出。
Access → Oracle(匯入)
- 開啟 Access,選取欲遷移的表。
- 關鍵:將表名、欄位名全部改為英文大寫(Oracle 預設大寫,避免雙引號麻煩)。
- 另存為 → 選擇 ODBC Database。
- 若無 DSN,點「新增」→ 選 Oracle in OraClient11g_home1(或對應版本)。
- 填寫 TNS Service Name、使用者、密碼,測試連線成功後確定。
- Access 會自動在 Oracle 建立同結構表並寫入資料。
Oracle → Access(匯出)
- Access → 外部資料 → 匯入/連結 → ODBC Database。
- 選擇已建立的 Oracle DSN(或建立新 DSN)。
- 選取欲匯入的 Oracle 表/檢視,確定即可。
ODBC DSN 建立步驟(Windows)
- 控制台 → 系統管理工具 → ODBC 資料來源 (32-bit / 64-bit),依 Office 位元選擇。
- 「系統 DSN」或「使用者 DSN」→ 新增 → Oracle in OraClientXX_home1。
- Data Source Name:自訂(如
ORA_PROD)。
- TNS Service Name:
tnsnames.ora 中的別名(如 ORCL)。
- User ID:Oracle 使用者,測試連線。
tnsnames.ora 範例
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
常見錯誤與解決
| 錯誤現象 | 原因 | 解決 |
| 「欄位名稱無效」/ 匯入失敗 | Access 中文欄位名含特殊字元或保留字 | 預先改為英文、底線、無空格 |
| 找不到驅動程式 | 未安裝 Oracle Client / 位元不匹配 | 安裝對應位元 Oracle Client 或 Instant Client + ODBC 套件 |
| 資料截斷 | Access 欄位長度 < Oracle 實際資料 | 匯入前在 Access 擴大欄位長度,或 Oracle 建表時指定足夠長度 |
| 自動編號欄位衝突 | Access AutoNumber 對應 Oracle Sequence/Identity | 匯入後重建 Sequence,或使用觸發器模擬 |
進階:大量資料建議改用
- Oracle SQL Developer:內建遷移嚮導,支援 Access、SQL Server、MySQL → Oracle。
- Data Pump (expdp/impdp):配合外部表或 DB Link,效能遠優於 ODBC。
- SQL*Loader:將 Access 匯出 CSV,再用 SQL*Loader 直載。