Access2MySQL 迁移全流程教程
Access2MySQL 是一款专门用于在 Microsoft Access 和 MySQL 数据库之间进行数据迁移的工具,它支持将表、索引、主键、外键等结构以及数据本身完整地转换过去。

(图片来源网络,侵删)
第一步:准备工作(至关重要!)
在开始迁移之前,充分的准备工作可以避免 90% 的问题。
-
备份数据源!备份数据源!备份数据源!
- 备份 Access 数据库 (.mdb/.accdb):这是你的原始数据,一旦迁移出错,可以从备份恢复。
- 备份 MySQL 数据库:如果你要迁移到一个已存在的 MySQL 数据库,请先备份它,以防万一新数据覆盖了重要信息。
-
获取并安装 Access2MySQL
- 访问官方网站下载最新版本的 Access2MySQL,它通常有两个版本:
- Standard (标准版):通常是命令行工具,功能强大,适合自动化和服务器环境。
- Pro (专业版):提供图形用户界面,操作更直观,适合初学者,本教程将以 Pro 版本的界面操作为主。
- 下载后,按照提示安装到你的电脑上。
- 访问官方网站下载最新版本的 Access2MySQL,它通常有两个版本:
-
确认你的 MySQL 连接信息
(图片来源网络,侵删)- 你需要准备好以下信息,这些信息通常由你的 MySQL 服务提供商(如自己搭建、虚拟主机商等)提供:
- MySQL 服务器地址:
localhost(本地)或168.1.100或db.yourdomain.com。 - 端口号:默认是
3306,如果不是默认值,请确认。 - 用户名:具有足够权限的 MySQL 用户。
- 密码:对应用户的密码。
- 目标数据库名称:你希望将 Access 数据导入到哪个数据库中,如果该数据库不存在,工具可以为你创建。
- MySQL 服务器地址:
- 你需要准备好以下信息,这些信息通常由你的 MySQL 服务提供商(如自己搭建、虚拟主机商等)提供:
-
检查数据类型兼容性
- Access 和 MySQL 的数据类型不完全相同,了解它们之间的对应关系有助于你更好地理解迁移结果。
- 常见对应关系示例: | Access 数据类型 | 常用 MySQL 数据类型 | 说明 | | :--- | :--- | :--- | | Text / Memo | VARCHAR, TEXT | Text 对应 VARCHAR,Memo 对应 TEXT。 | | Number (Integer) | INT, TINYINT, BIGINT | 根据数值范围选择。 | | Number (Double) | DOUBLE, DECIMAL | Double 对应 DOUBLE,货币建议用 DECIMAL。 | | Date/Time | DATETIME, TIMESTAMP | DATETIME 更常用。 | | Yes/No | TINYINT(1), BOOLEAN | TINYINT(1) 是 0 或 1,BOOLEAN 是其别名。 | | AutoNumber | INT AUTO_INCREMENT | 主键自增。 |
- 注意:Access2MySQL 会自动进行大部分转换,但了解这些有助于你后续检查和调整。
第二步:使用 Access2MySQL 进行迁移
打开 Access2MySQL Pro 软件,你会看到一个简洁的向导界面。
从 Access 导入到空 MySQL 数据库
这是最常见的情况,即创建一个全新的 MySQL 数据库来存放 Access 的数据。
-
选择源数据库
(图片来源网络,侵删)- 在界面左侧选择 "Source" (源)。
- Database Type: 选择
Microsoft Access。 - File: 点击
Browse(浏览) 按钮,选择你的 Access 数据库文件(.mdb或.accdb)。 - User / Password: 如果你的 Access 数据库设置了密码,在这里输入,否则留空。
- 点击 "Connect" (连接) 按钮,如果连接成功,软件会列出 Access 数据库中的所有表。
-
选择目标数据库
- 在界面右侧选择 "Target" (目标)。
- Database Type: 选择
MySQL。 - Host: 输入你的 MySQL 服务器地址。
- Port: 输入端口号(默认
3306)。 - User: 输入你的 MySQL 用户名。
- Password: 输入密码。
- Database: 输入你希望在 MySQL 中创建的新数据库名称。
- 点击 "Connect" (连接) 按钮,如果连接成功,软件会提示你目标数据库为空(因为你输入的是新数据库名)。
-
配置转换选项
- 在中间的 "Conversion" (转换) 选项卡中,你可以进行高级设置。
- Convert data: 务必勾选此项,否则只会创建表结构而不会导入数据。
- Convert indexes: 建议勾选,以保留 Access 中的索引。
- Convert foreign keys: 建议勾选,以保留表之间的关系。
- Convert default values: 勾选以保留默认值。
- Create new DB: 如果目标数据库不存在,是否自动创建,通常我们已手动输入了新数据库名,所以这里可以不勾选。
- Character set: 非常重要! 对于中文等非英文字符,请选择
utf8或utf8mb4,强烈推荐使用utf8mb4,因为它能更好地支持 emoji 和某些特殊字符。 - SQL dump file: 你可以指定一个文件路径,将生成的 SQL 导出脚本保存下来,这是一个好习惯,便于审查和手动执行。
-
选择要迁移的表
- 软件会自动选择所有表,你可以取消勾选你不想迁移的表。
- 预览映射:点击
Preview Mapping按钮,可以查看每个表的数据类型是如何被转换的,如果发现不合适的转换,可以在这里微调。
-
开始迁移
- 所有设置完成后,点击主界面的 "Convert" (转换) 按钮。
- 软件会开始创建表结构,然后逐个表导入数据,你可以在下方的日志窗口中看到实时进度和任何可能的错误信息。
- 等待进度条 100% 完成,并看到 "Conversion completed successfully!" (转换成功) 的提示。
追加数据到已存在的 MySQL 数据库
如果你的 MySQL 数据库已经存在,并且只想追加新的表或更新现有表的数据。
- 连接源数据库 (Access):步骤与场景一相同。
- 连接目标数据库 (MySQL):
- 选择
MySQL作为目标类型。 - 输入已存在的 MySQL 服务器信息、用户名、密码。
- 在 Database 字段中,输入已存在的数据库名称。
- 点击 "Connect"。
- 选择
- 设置追加模式:
- 在 "Conversion" 选项卡中,找到 "Existing data handling" (现有数据处理) 选项。
- 你有几个选择:
- Append data: 将 Access 中的数据追加到 MySQL 的对应表中。(最常用)
- Replace data: 先清空 MySQL 表,然后导入 Access 的数据。
- Do nothing: 如果表已存在,则跳过该表。
- 开始迁移:
- 选择你想要追加的表,然后点击 "Convert"。
第三步:迁移后验证
迁移完成后,工作并没有结束,验证是确保数据完整性的关键一步。
-
检查表数量和名称
- 使用 MySQL 客户端工具(如 Navicat, DBeaver, 或命令行的
mysql)连接到你的 MySQL 服务器。 - 执行命令
SHOW TABLES;,检查表的数量和名称是否与 Access 中的完全一致。
- 使用 MySQL 客户端工具(如 Navicat, DBeaver, 或命令行的
-
检查记录数
- 对比每个表的记录数,最简单的方法是在 Access 和 MySQL 中分别执行
SELECT COUNT(*) FROM 表名;。 - 例如:
- 在 Access 中:
SELECT COUNT(*) FROM Customers; - 在 MySQL 中:
SELECT COUNT(*) FROM Customers;
- 在 Access 中:
- 如果两个数字不一致,说明数据迁移出现了问题。
- 对比每个表的记录数,最简单的方法是在 Access 和 MySQL 中分别执行
-
抽样检查数据
- 随机选择几个表,从中抽取几条记录,对比内容是否一致。
- 例如:
- 在 Access 中:
SELECT * FROM Orders LIMIT 5; - 在 MySQL 中:
SELECT * FROM Orders LIMIT 5;
- 在 Access 中:
- 特别注意检查包含中文、特殊符号、日期、货币等格式的字段。
-
检查表结构
- 检查主键、自增字段、索引、外键等是否正确创建。
- 在 MySQL 中,可以使用
SHOW CREATE TABLE 表名;来查看表的完整定义,检查是否与 Access 中的设计一致。
-
检查应用程序连接
- 如果你的网站或应用程序原本连接的是 Access,现在需要将其修改为连接 MySQL。
- 更新你的连接字符串,指向新的 MySQL 服务器。
- 进行全面的功能测试,确保所有功能(如查询、添加、修改、删除)都能正常工作。
常见问题与解决方案
-
Q: 连接 MySQL 时报错 "Access denied for user..."
- A: 检查用户名、密码是否正确,确保该用户对目标数据库有
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER等权限。
- A: 检查用户名、密码是否正确,确保该用户对目标数据库有
-
Q: 导入后中文显示为问号 "???" 或乱码
- A: 这是最常见的问题,原因通常是字符集不匹配。
- 检查转换设置:确保在 Access2MySQL 的 "Conversion" 选项卡中,Character set 设置为
utf8或utf8mb4。 - 检查 MySQL 库和表的字符集:在 MySQL 中执行
SHOW VARIABLES LIKE 'character_set%';,确保character_set_database和character_set_server都是utf8mb4,然后检查你的目标数据库和表的默认字符集是否也是utf8mb4。 - 检查 Access 文件本身:确保 Access 数据库内部的编码也是正确的。
- 检查转换设置:确保在 Access2MySQL 的 "Conversion" 选项卡中,Character set 设置为
- A: 这是最常见的问题,原因通常是字符集不匹配。
-
Q: 某些表迁移失败,提示 "Data too long for column..."
- A: 这是因为 MySQL 字段的长度限制比 Access 更严格,一个 Access 的
Text(255)字段,如果数据中有全角字符,实际占用字节数可能超过 255,你需要手动在 MySQL 中调整对应字段的最大长度(改为VARCHAR(500))。
- A: 这是因为 MySQL 字段的长度限制比 Access 更严格,一个 Access 的
-
Q: 迁移完成后,Access 中的 OLE 对象(如图片、文档)不见了
- A: Access2MySQL 不直接支持 OLE 对象和超链接字段的迁移,这些数据需要通过特殊方式处理,例如将文件保存到服务器,然后在数据库中只保存文件路径。
使用 Access2MySQL 迁移数据是一个相对直接的过程,但其成功与否取决于迁移前的准备和迁移后的验证。
核心流程回顾:
- 备份:永远不要跳过这一步。
- 准备工具和信息:下载 Access2MySQL,整理好 MySQL 连接信息。
- 配置迁移:正确选择源和目标,配置字符集和转换选项。
- 执行转换:点击 "Convert" 并等待完成。
- 全面验证:检查表、记录、数据和应用程序,确保一切正常。
遵循以上步骤,你就可以顺利完成从 Access 到 MySQL 的数据迁移,祝你成功!
