Access2MySQL 迁移全流程教程

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

access2mysql教程
(图片来源网络,侵删)

第一步:准备工作(至关重要!)

在开始迁移之前,充分的准备工作可以避免 90% 的问题。

  1. 备份数据源!备份数据源!备份数据源!

    • 备份 Access 数据库 (.mdb/.accdb):这是你的原始数据,一旦迁移出错,可以从备份恢复。
    • 备份 MySQL 数据库:如果你要迁移到一个已存在的 MySQL 数据库,请先备份它,以防万一新数据覆盖了重要信息。
  2. 获取并安装 Access2MySQL

    • 访问官方网站下载最新版本的 Access2MySQL,它通常有两个版本:
      • Standard (标准版):通常是命令行工具,功能强大,适合自动化和服务器环境。
      • Pro (专业版):提供图形用户界面,操作更直观,适合初学者,本教程将以 Pro 版本的界面操作为主。
    • 下载后,按照提示安装到你的电脑上。
  3. 确认你的 MySQL 连接信息

    access2mysql教程
    (图片来源网络,侵删)
    • 你需要准备好以下信息,这些信息通常由你的 MySQL 服务提供商(如自己搭建、虚拟主机商等)提供:
      • MySQL 服务器地址localhost(本地)或 168.1.100db.yourdomain.com
      • 端口号:默认是 3306,如果不是默认值,请确认。
      • 用户名:具有足够权限的 MySQL 用户。
      • 密码:对应用户的密码。
      • 目标数据库名称:你希望将 Access 数据导入到哪个数据库中,如果该数据库不存在,工具可以为你创建。
  4. 检查数据类型兼容性

    • 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 的数据。

  1. 选择源数据库

    access2mysql教程
    (图片来源网络,侵删)
    • 在界面左侧选择 "Source" (源)。
    • Database Type: 选择 Microsoft Access
    • File: 点击 Browse (浏览) 按钮,选择你的 Access 数据库文件(.mdb.accdb)。
    • User / Password: 如果你的 Access 数据库设置了密码,在这里输入,否则留空。
    • 点击 "Connect" (连接) 按钮,如果连接成功,软件会列出 Access 数据库中的所有表。
  2. 选择目标数据库

    • 在界面右侧选择 "Target" (目标)。
    • Database Type: 选择 MySQL
    • Host: 输入你的 MySQL 服务器地址。
    • Port: 输入端口号(默认 3306)。
    • User: 输入你的 MySQL 用户名。
    • Password: 输入密码。
    • Database: 输入你希望在 MySQL 中创建的新数据库名称。
    • 点击 "Connect" (连接) 按钮,如果连接成功,软件会提示你目标数据库为空(因为你输入的是新数据库名)。
  3. 配置转换选项

    • 在中间的 "Conversion" (转换) 选项卡中,你可以进行高级设置。
    • Convert data: 务必勾选此项,否则只会创建表结构而不会导入数据。
    • Convert indexes: 建议勾选,以保留 Access 中的索引。
    • Convert foreign keys: 建议勾选,以保留表之间的关系。
    • Convert default values: 勾选以保留默认值。
    • Create new DB: 如果目标数据库不存在,是否自动创建,通常我们已手动输入了新数据库名,所以这里可以不勾选。
    • Character set: 非常重要! 对于中文等非英文字符,请选择 utf8utf8mb4,强烈推荐使用 utf8mb4,因为它能更好地支持 emoji 和某些特殊字符。
    • SQL dump file: 你可以指定一个文件路径,将生成的 SQL 导出脚本保存下来,这是一个好习惯,便于审查和手动执行。
  4. 选择要迁移的表

    • 软件会自动选择所有表,你可以取消勾选你不想迁移的表。
    • 预览映射:点击 Preview Mapping 按钮,可以查看每个表的数据类型是如何被转换的,如果发现不合适的转换,可以在这里微调。
  5. 开始迁移

    • 所有设置完成后,点击主界面的 "Convert" (转换) 按钮。
    • 软件会开始创建表结构,然后逐个表导入数据,你可以在下方的日志窗口中看到实时进度和任何可能的错误信息。
    • 等待进度条 100% 完成,并看到 "Conversion completed successfully!" (转换成功) 的提示。

追加数据到已存在的 MySQL 数据库

如果你的 MySQL 数据库已经存在,并且只想追加新的表或更新现有表的数据。

  1. 连接源数据库 (Access):步骤与场景一相同。
  2. 连接目标数据库 (MySQL)
    • 选择 MySQL 作为目标类型。
    • 输入已存在的 MySQL 服务器信息、用户名、密码。
    • Database 字段中,输入已存在的数据库名称
    • 点击 "Connect"
  3. 设置追加模式
    • "Conversion" 选项卡中,找到 "Existing data handling" (现有数据处理) 选项。
    • 你有几个选择:
      • Append data: 将 Access 中的数据追加到 MySQL 的对应表中。(最常用)
      • Replace data: 先清空 MySQL 表,然后导入 Access 的数据。
      • Do nothing: 如果表已存在,则跳过该表。
  4. 开始迁移
    • 选择你想要追加的表,然后点击 "Convert"

第三步:迁移后验证

迁移完成后,工作并没有结束,验证是确保数据完整性的关键一步。

  1. 检查表数量和名称

    • 使用 MySQL 客户端工具(如 Navicat, DBeaver, 或命令行的 mysql)连接到你的 MySQL 服务器。
    • 执行命令 SHOW TABLES;,检查表的数量和名称是否与 Access 中的完全一致。
  2. 检查记录数

    • 对比每个表的记录数,最简单的方法是在 Access 和 MySQL 中分别执行 SELECT COUNT(*) FROM 表名;
    • 例如:
      • 在 Access 中:SELECT COUNT(*) FROM Customers;
      • 在 MySQL 中:SELECT COUNT(*) FROM Customers;
    • 如果两个数字不一致,说明数据迁移出现了问题。
  3. 抽样检查数据

    • 随机选择几个表,从中抽取几条记录,对比内容是否一致。
    • 例如:
      • 在 Access 中:SELECT * FROM Orders LIMIT 5;
      • 在 MySQL 中:SELECT * FROM Orders LIMIT 5;
    • 特别注意检查包含中文、特殊符号、日期、货币等格式的字段。
  4. 检查表结构

    • 检查主键、自增字段、索引、外键等是否正确创建。
    • 在 MySQL 中,可以使用 SHOW CREATE TABLE 表名; 来查看表的完整定义,检查是否与 Access 中的设计一致。
  5. 检查应用程序连接

    • 如果你的网站或应用程序原本连接的是 Access,现在需要将其修改为连接 MySQL。
    • 更新你的连接字符串,指向新的 MySQL 服务器。
    • 进行全面的功能测试,确保所有功能(如查询、添加、修改、删除)都能正常工作。

常见问题与解决方案

  • Q: 连接 MySQL 时报错 "Access denied for user..."

    • A: 检查用户名、密码是否正确,确保该用户对目标数据库有 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER 等权限。
  • Q: 导入后中文显示为问号 "???" 或乱码

    • A: 这是最常见的问题,原因通常是字符集不匹配。
      1. 检查转换设置:确保在 Access2MySQL 的 "Conversion" 选项卡中,Character set 设置为 utf8utf8mb4
      2. 检查 MySQL 库和表的字符集:在 MySQL 中执行 SHOW VARIABLES LIKE 'character_set%';,确保 character_set_databasecharacter_set_server 都是 utf8mb4,然后检查你的目标数据库和表的默认字符集是否也是 utf8mb4
      3. 检查 Access 文件本身:确保 Access 数据库内部的编码也是正确的。
  • Q: 某些表迁移失败,提示 "Data too long for column..."

    • A: 这是因为 MySQL 字段的长度限制比 Access 更严格,一个 Access 的 Text(255) 字段,如果数据中有全角字符,实际占用字节数可能超过 255,你需要手动在 MySQL 中调整对应字段的最大长度(改为 VARCHAR(500))。
  • Q: 迁移完成后,Access 中的 OLE 对象(如图片、文档)不见了

    • A: Access2MySQL 不直接支持 OLE 对象和超链接字段的迁移,这些数据需要通过特殊方式处理,例如将文件保存到服务器,然后在数据库中只保存文件路径。

使用 Access2MySQL 迁移数据是一个相对直接的过程,但其成功与否取决于迁移前的准备迁移后的验证

核心流程回顾

  1. 备份:永远不要跳过这一步。
  2. 准备工具和信息:下载 Access2MySQL,整理好 MySQL 连接信息。
  3. 配置迁移:正确选择源和目标,配置字符集和转换选项。
  4. 执行转换:点击 "Convert" 并等待完成。
  5. 全面验证:检查表、记录、数据和应用程序,确保一切正常。

遵循以上步骤,你就可以顺利完成从 Access 到 MySQL 的数据迁移,祝你成功!