2012-02-18 65 views
6

我有一个PHP脚本解析XML文件,并创建一个看起来像这样的大型SQL文件:如何导入大型SQL文件到MySQL表

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

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

我已经试过类似的命令:

的mysql -u根-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个小时?

回答

2

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

+0

为什么我不这么想...... – nick 2012-02-18 02:04:30

+0

刚刚在5分钟左右导入了2.5GB。感谢您的建议! – nick 2012-02-18 03:15:21

+0

也看看my.cnf中的'max_allowed_pa​​cket = 16M'设置 - 将它设置为非常大的像16M将允许更大的单插入 – 2012-02-18 03:49:27