我用程序生成一个sql文件,文件里面是一条Insert语句对应几千万条记录,文件大小1G多,通过命令行source命令导入到数据库时报错ERROR 5 (HY000): Out of memory。
网上说要修改my.ini文件里面的max_allowed_packet,我改为200M,tmp_table_size改为1000M。然后从1G多文件中拷贝出124M文件,通过source命令导入还是报错:ERROR 5 (HY000): Out of memory (Needed 2490020 bytes) (导入一个124M文件,竟然要2.5G内存?不解啊...)
如果sql文件为几十M则可顺利导入。请大侠们为我支招啊,如何才能顺利一次性导入1G多sql文件?或者其他省事的方法,不胜感激~
网上说要修改my.ini文件里面的max_allowed_packet,我改为200M,tmp_table_size改为1000M。然后从1G多文件中拷贝出124M文件,通过source命令导入还是报错:ERROR 5 (HY000): Out of memory (Needed 2490020 bytes) (导入一个124M文件,竟然要2.5G内存?不解啊...)
如果sql文件为几十M则可顺利导入。请大侠们为我支招啊,如何才能顺利一次性导入1G多sql文件?或者其他省事的方法,不胜感激~
导出数据时
先只导出表结构
--no-data,-d然后导出数据
这样导入时可以分批导入
可以试一下
--compress,-C压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)。
这个选项
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
错误2008: MySQL client ran out of memory
要想更正该问题,首先应检查查询是否正确。返回这么多行是否合理?如果不合理,更正查询并再次尝试。否则,应使用“--quick”选项调用mysql。这样,将使用mysql_use_result() C API函数来检索结果集,这类函数能够降低客户端上的负载(但会加重服务器上的负载)。