MySQL Workbench 6.2.0 中添加了此功能。
需要 Microsoft Windows,因为 Microsoft Access ODBC 驱动程序仅在 Windows 上可用。至于目标 MySQL 服务器,您可以将它放在同一台本地机器上或网络中的其他地方。
Microsoft Access 将关系/外键信息存储在名为MSysRelationships 的内部表 中。该表受到保护,即使是 Admin 用户也无法进行读取访问,因此如果您尝试在不开放访问权限的情况下进行迁移,那么您将收到如下错误:
[42000] [Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'msysobjects'. (-1907) (SQLExecDirectW)
授予 Admin 角色读取权限的步骤(使用 Microsoft Access 2007)总结如下:
在 Microsoft Access 中打开数据库
-
在数据库工具功能区中,单击 Visual Basic以打开 Visual Basic (VB) 控制台。下图显示了此按钮在宏区域中的位置。
要确认您以“Admin”用户身份登录,请找到“立即”面板并键入“?CurrentUser”并按Enter 键。这应该在面板中的“?CurrentUser”下输出“Admin”(见下图)。
-
同样在“立即”面板中,键入以下命令以授予访问权限:
CurrentProject.Connection.Execute "GRANT SELECT ON MSysRelationships TO Admin"
退出 Microsoft Access 应用程序
在 MySQL Workbench 主屏幕中,您可以通过单击 Workbench 侧面板中的数据库迁移启动器 ( ) 或 从主菜单中依次单击数据库和迁移向导来启动迁移向导。如下图所示,将显示一个新选项卡,显示迁移向导的概览页面。
要验证您是否安装了 ODBC 驱动程序,请单击 MySQL Workbench 迁移概述页面中的打开 ODBC 管理器以打开系统 ODBC 工具。然后,选择“驱动程序”选项卡(参见下图)。
MySQL Workbench 有一个 64 位可执行文件。您使用的 ODBC 驱动程序必须与您正在使用的 MySQL Workbench 二进制文件具有相同的体系结构。如果在迁移期间您收到有关“驱动程序和应用程序之间的体系结构不匹配”的 ODBC 错误,则说明您安装了错误版本的 MySQL Workbench。
在“用户 DSN ”选项卡中,单击 “添加”为您的数据库文件创建 DSN。如下图所示,为 northwind 数据库示例创建了一个新的数据源。
单击“概览”页面中的“开始迁移”以前进到“源选择”页面。在这里,您需要提供有关要从中迁移的 Access 数据库、要使用的 ODBC 驱动程序以及 Access 连接参数的信息。
打开数据库系统组合框以获得受支持的 RDBMS 列表,然后从列表中选择Microsoft Access。它下面还有另一个组合框,名为Stored Connection。它列出了为该 RDBMS 保存的连接设置。您可以通过标记页面底部的复选框以及已保存连接的名称来保存连接。
下一个组合框选择连接方法。这次我们将从列表中选择ODBC 数据源。这允许您选择您在系统中配置的预先存在的 DSN。
DSN下拉列表将包含您在系统中定义的所有 DSN 。从列表中选择您为要迁移的 Access 数据库创建的数据库。
在默认字符集字段中,您可以选择数据库的字符集(参见下图)。如果您的 Access 版本使用西方/拉丁字符,您可以保留默认值cp1252。但是,如果您使用本地化版本的 Access,例如日语,则必须输入您的 Microsoft Office 版本使用的正确字符集,否则数据将被错误复制。
最后点击Test Connection,检查是否可以建立ODBC连接。如果您输入了正确的参数,那么您应该会看到一条消息,报告连接尝试成功。
接下来,通过定义连接到 MySQL 服务器实例的参数来设置目标 (MySQL) 数据库参数。完成后,单击测试连接以验证连接定义。下图显示了“ 参数”选项卡。
接下来,您应该看到所选数据库对象的逆向工程进度。此时,迁移向导正在检索涉及的数据库对象的相关信息(如表名、表列、主键和外键、索引、触发器、视图等)。您将看到一个显示进度的页面,如下图所示。
等待它完成并确认一切顺利。接下来,Source Objects显示一个列表,其中包含已检索并可用于迁移的对象。它将类似于下图。
在前面的示例中,迁移向导发现了源数据库的表和视图对象。默认情况下仅选择表对象进行迁移。
您也可以选择视图对象,但稍后您还必须提供它们对应的 MySQL 等效代码(它们没有自动迁移可用),因此我们的示例将不选中视图。这同样适用于存储过程、函数和触发器。
单击Show Selection以准确配置要迁移的对象,如下图所示。
右侧的对象将被迁移。过滤框可以过滤列表(允许使用通配符,如上所示)。通过使用箭头按钮,您可以过滤掉不想迁移的对象。在继续之前,清除过滤器文本框以检查所选对象的完整列表。我们的示例迁移了所有表对象,因此它们都在“ 要迁移的对象”列表中,并且选中了“ 迁移表对象”复选框。
此时,迁移向导将选定的对象转换为它们等效的对象,进入目标 MySQL 服务器,它还生成创建它们所需的 MySQL 代码。在手动编辑步骤显示下图中所示的初始页面 之前,您可能需要等待。
View组合框更改了已迁移数据库对象 的显示方式(参见下图)。单击“显示代码”以查看和编辑与所选对象对应的生成的 MySQL 代码。此外,您可以双击对象树中的一行以编辑对象名称,或双击数据库行以更改其名称。
View组合框还有一个 Column Mappings选项。如下图所示,它显示了表列,并允许您查看和修复列类型、默认值和其他属性的映射。
接下来是Target Creation Options页面,如下图所示。
使用目标创建选项在目标 RDBMS(第二步中的 MySQL 实例)中执行生成的代码,或者您可以将其转储到 SQL 脚本文件。保持如上图所示,并移至下一页。迁移后的 SQL 代码将在目标 MySQL 服务器上执行。您可以在下图所示 的Create Schemas页面中查看其进度。
模式和对象的创建完成后,您可以转到“创建目标结果”页面。它显示了已创建对象的列表,并包括创建对象时产生的任何错误。它将类似于下图。
您可以使用右侧的代码框编辑迁移代码,然后单击Apply保存您的更改。如果进行了编辑,您仍然需要使用修改后的代码重新创建对象才能执行更改。这是通过单击重新创建对象来完成的。在本教程中,我们不会更改任何内容,因此请保持代码不变,并继续访问“数据传输设置”页面。
下一步将数据从源 Access 数据库传输到新创建的目标 MySQL 数据库中。Data Transfer Setup 页面允许您配置此过程(参见下图)。
这里有两组选项。第一个允许您执行实时传输和/或将数据转储到您可以稍后执行的批处理文件中。另一组选项允许您更改此过程。
本教程使用此页面中选项的默认值,如上图所示。接下来,传输数据。此时相应的进度页面确认正在执行的任务(见下图)。
完成后,转到下一页。您将看到一个总结整个过程的报告页面。现在,查看并单击 Finish关闭向导。