如何将大型SQL文件导入到MySQL表中

6

我有一个解析XML文件并创建类似于以下SQL文件的大型SQL文件的php脚本:

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个小时的情况下完成这个操作?

1个回答

2

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


刚刚导入了2.5GB的数据,只用了大约5分钟。感谢您的建议! - nick
还要注意一下my.cnf文件中的'max_allowed_packet = 16M'设置 - 将其设置为像16M这样非常大的值将允许更大的单个插入操作。 - Adrian Cornish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接