Access(Jet/ACE 引擎)屬於桌面級文件數據庫,單文件 2GB 限制、併發連接數低、無存儲過程/視圖/觸發器、Web 部署極其困難。MySQL 作為成熟開源關係型數據庫,完美解決上述痛點,是 Web 應用遷移首選。
| 方案 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
| MySQL Workbench 遷移向導 | 表結構+數據一次性遷移,表數 < 100 | 圖形化、字段類型映射可視化、支持異構源 | 大數據量慢、複雜查詢/視圖需手工調整 |
| Bullzip Access to MySQL | Windows 環境、需生成 SQL 腳本 | 免費、生成標準 SQL、支持命令行自動化 | 僅 Windows、大表易超時 |
| ETL 工具 | 生產環境定期同步、數據清洗 | 可視化流程、增量同步、錯誤重試 | 學習成本高、部署複雜 |
.mdb/.accdb 文件,測試連接(需安裝 Access Database Engine)。Text → VARCHAR(255)、Memo → TEXT、Date/Time → DATETIME、AutoNumber → INT AUTO_INCREMENT、Yes/No → TINYINT(1))。Order、Group 作為列名,MySQL 需反引號 \`Order\` 或重命名。Date() → CURDATE()、Now() → NOW()、Format() → DATE_FORMAT()。* → %、? → _。LEFT JOIN ... ON 但舊版語法不同,統一改為標準 ANSI JOIN。AutoNumber 遷移後需手動設置 AUTO_INCREMENT 並重置種子值。-- 連接字符串變更
-- Access (ODBC)
Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path\db.accdb;
-- MySQL (JDBC)
jdbc:mysql://host:3306/schema?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
-- 查詢參數化
-- Access: SELECT * FROM Users WHERE Name = ? (位置參數)
-- MySQL: 同樣支持 ?, 但推薦命名參數 :name (需驅動支持)
若受限於虛擬主機不支持 MySQL,可考慮:
百度經驗圖文教程:Access 轉 MySQL 步驟詳解