【问题标题】:How to import LARGE sql files into mysql table如何将 LARGE sql 文件导入 mysql 表
【发布时间】:2012-03-09 10:04:28
【问题描述】:

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

【问题讨论】:

    标签: php mysql sql apache mysqlimport


    【解决方案1】:

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

    【讨论】:

    • 刚刚导入 2.5gb 大约需要 5 分钟。谢谢你的建议!
    • 还可以查看 my.cnf 中的 'max_allowed_pa​​cket = 16M' 设置 - 将其设置为 16M 等非常大的值将允许更大的单次插入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2016-04-05
    • 2010-09-14
    • 2015-04-29
    • 2011-04-07
    • 2012-06-20
    相关资源
    最近更新 更多