一尘不染

如何将大型sql文件导入mysql表

sql

我有一个php脚本,用于解析XML文件并创建一个看起来像这样的大型SQL文件:

INSERT IGNORE INTO table(field1,field2,field3...)
VALUES ("value1","value2",int1...),
("value1","value2",int1)...etc

这个文件加起来超过20GB(我已经在2.5GB的文件上进行过测试,但它也失败了)。

我已经尝试过类似的命令:

mysql -u root -p table_name </var/www/bigfile.sql

这适用于较小的文件,例如大约50MB。但不适用于较大的文件。

我试过了:

mysql> source /var/www/bigfile.sql

我也尝试了mysqlimport,但是甚至无法正确处理我的文件。

我不断收到一条错误消息,内容是

ERROR 2006 (HY000): MySQL server has gone away

发生约 我开始执行后30秒。

我将allowed_max_packet设置为4GB,但在使用SHOW VARIABLES进行验证时,它仅显示1GB。

有没有一种方法可以做到又不浪费10个小时呢?


阅读 146

收藏
2021-03-10

共1个答案

一尘不染

尝试将文件拆分为多个INSERT查询。

2021-03-10