首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Access 遷移 MySQL 實戰:ODBC 導出 → 類型修正 → 自增主鍵重建全流程

     編輯:MySQL 資料庫相關知識

遷移動機

  • Access 單機、Windows 專屬、併發差、2GB 限制、安全性弱
  • MySQL 跨平台、高併發、免費開源、Web 原生支援、易擴展

工具鏈:Access + MyODBC + MySQL 命令行

  1. 安裝 MySQL Server + MySQL Connector/ODBC (MyODBC)
  2. ODBC 管理員 → **系統 DSN** → 添加 MySQL 驅動 → 配置 Server/Database/User/Password → 測試通
  3. Access 2000+ → 右鍵表 → **匯出** → 選擇 ODBC Database → 選擇剛建 DSN → 逐表導出

坑點一:大小寫敏感導致應用報錯

  • Access 表/列名不區分大小寫,MySQL Linux 下 **區分大小寫** (lower_case_table_names=0 默認)
  • 現象:應用查詢 SELECT id FROM users 報錯 Table 'Users' doesn't exist
  • 對策:統一小寫命名規範,或啟動 MySQL 時 lower_case_table_names=1 (僅限 Windows/macOS,Linux 不建議)

坑點二:自動編號 (AutoNumber) 丟失 → 非自增主鍵

  • Access 導出不保留 AUTO_INCREMENT 屬性,主鍵變為普通 INT NOT NULL
  • 現象:插入新行報錯 Column 'id' cannot be null 或主鍵衝突

修復方案:mysqldump 導出 → 修改 DDL → 重建導入

  1. 導出結構與數據:
mysqldump -u root -p dbname > dump.sql
  1. 編輯 dump.sql,修改建表語句:
-- 原始
CREATE TABLE `users` (
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

-- 修正
CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;
  1. 重建:
mysql -u root -p -e "DROP DATABASE dbname; CREATE DATABASE dbname;"
mysql -u root -p dbname < dump.sql

驗證清單

項目檢查方法標準
行數一致SELECT COUNT(*) FROM access_tbl; SELECT COUNT(*) FROM mysql_tbl;完全相等
主鍵自增SHOW CREATE TABLE t; 含 AUTO_INCREMENT / 插入新行無需指定 ID自增生效
數據類型DESC t; 對比 Access 設計視圖對應正確 (Text→VARCHAR/TEXT, Number→INT/DECIMAL, Date→DATETIME)
索引/外鍵SHOW INDEX FROM t;關鍵索引保留,外鍵按需重建
應用煙霧測試修改連接串指向 MySQL,跑核心業務流程無報錯、數據正確

現代化遷移工具 (免手工修 SQL)

  • MySQL Workbench Migration Wizard:支援 Access (通過 ODBC) → MySQL,自動類型映射、主鍵/自增識別、批量遷移
  • Access 內建「SQL Server」匯出**:先遷到 SQL Server Express (免費),再用 SSMA/DMS 遷 MySQL,類型保真度更高
  • 商業 ETL**:Talend、Informatica、Kettle (PDI) 可視化流程、增量同步

結語

Access → MySQL 遷移看似簡單,**「導出只是開始,類型修正是核心,應用驗證才是終點」**。ODBC 導出 + mysqldump 修正 DDL 是零成本方案的經典組合;生產項目強烈建議用 Workbench Migration Wizard 等專用工具,將人為錯誤率壓至最低,並預留回滾窗口與雙寫驗證期。

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