6

我有一个 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 表名 < /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 个小时的情况下做到这一点?

4

1 回答 1

2

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

于 2012-02-18T02:02:44.217 回答