所以我有一个巨大的表,包含大约700万条记录,在MS Access(* .mdb)中,我希望将它转换为更可行的MySQL格式,并将其存储在我的网络服务器上.文件本身重2GB.
问题是,由于表格太大,它不会让我正常导出(Access表示限制是65,536条记录.)
我尝试了一些第三方软件,但无济于事.
任何人都可以推荐一种干净的方式,而不会损坏内部的数据?
在此先感谢您的帮助.
从Windows ODBC数据源管理器为MysqL服务器创建DSN(数据源名称).
然后从Access 2003中,在“数据库”窗口中选择您的表,然后选择“文件” – >“从Access导出”主菜单.在“导出表’yourtablename’到…”对话框中,从“保存类型”下拉列表(位于对话框底部)中选择“ODBC数据库()”.下一个对话框允许您指定MysqL将用于导出表的名称,并且默认为Access表名.单击“确定”后,您将看到另一个对话框“选择数据源”,您可以在其中选择DSN for MysqL.在该对话框上单击“确定”后,您可能会再问一个用户名和密码.提供它们,然后单击“确定”.
希望你的表格会毫无错误地转移.但是,我从未使用MysqL进行过该操作.通过ODBC传输到sql Server和PostGresql,它对我有用.所以我不明白为什么它也不适用于MysqL.
此外,我从未试图一次性出口700万条记录.如果它窒息,我们将不得不找出解决方法.
如果您使用的是Access 2007而不是2003,请从功能区的“导出”部分开始查找类似的选项.
我建议这种方法,因为我的印象是这个导出将是一次性交易,所以我认为Access UI导出方法将是最简单的.但是,您可以使用带有ODBC DSN的DoCmd.TransferDatabase Method对VBA代码执行基本相同的操作.
另一种方法是在MysqL中创建一个兼容的表结构,在Access目的表的Access中创建一个链接(再次使用你的DSN),然后从Access运行一个“追加查询”:
INSERT INTO link_to_MysqL_table (field1,field2,field3,etc)
SELECT field1,etc
FROM access_table;
如果导出会在700万条记录上产生阻塞,那么追加查询方法会很有用.您可以添加WHERE子句以将SELECT查询的输出记录集限制为可管理的块大小,然后使用不同的WHERE重复以指定另一个块.