如果您还没有,请为 MySQL 安装 ODBC 驱动程序。最新版本在这里:Download Connector/ODBC
从 Windows ODBC 数据源管理器为您的 MySQL 服务器创建 DSN(数据源名称)。
然后从 Access 2003 中,在数据库窗口中选择您的表,然后从 Access 的主菜单中选择文件->导出。在“Export Table 'yourtablename' To ...”对话框中,从“Save as type”下拉列表(位于对话框底部)中选择“ODBC Databases()”。下一个对话框允许您指定 MySQL 将用于导出表的名称,它默认为 Access 表名称。单击确定后,您将看到另一个对话框“选择数据源”,您可以在其中为 MySQL 选择 DSN。在该对话框上单击“确定”后,您可能会再收到一个询问用户名和密码的信息。提供它们,然后单击“确定”。
希望您的餐桌能够顺利转移。但是,我从来没有用 MySQL 做过这个操作。它通过 ODBC 传输到 SQL Server 和 PostGreSQL 对我有用。所以我不明白为什么它也不能与 MySQL 一起使用。
此外,我从未尝试一次性导出 700 万条记录。如果它窒息,我们将不得不想出一个解决方法。
如果您使用的是 Access 2007 而不是 2003,请从功能区的“导出”部分开始寻找类似的选项。
我建议这种方法是因为我的印象是这种导出将是一次性交易,所以我认为 Access UI 导出方法会最简单。但是,您可以使用带有 ODBC DSN 的 DoCmd.TransferDatabase Method 对 VBA 代码执行基本相同的操作。
另一种选择是在 MySQL 中创建兼容的表结构,在 Access 中创建指向 MySQL 目标表的链接(再次使用您的 DSN),然后从 Access 运行“追加查询”:
INSERT INTO link_to_mysql_table (field1, field2, field3, etc)
SELECT field1, field2, field3, etc
FROM access_table;
如果导出阻塞 700 万条记录,追加查询方法可能很有用。您可以添加 WHERE 子句以将 SELECT 查询的输出记录集限制为可管理的块大小,然后使用不同的 WHERE 重复以指定另一个块。