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