mysql导入超大sql文件

在网上找了个2017年行政区划的sql文件,需要导入到本地mysql库中,同事使用navicat导入的时候直接卡死了,该SQL文件差不多112MB大小。通过百度、google找到很多办法,有的博客提供的方法还有坑,最终通过实践找到了一个好用而且可行的办法:

注意:本操作环境为:windows10、mysql5.7.17版本,linux平台步骤基本一样。

1)使用cmd进入mysql并切换到对应的库:

mysql –uroot –p123456
use bart;

2)关闭sql_log_binautocommitmax_allowed_packet选项:

show VARIABLES like '%sql_log_bin%'; # 查看参数值
show VARIABLES like '%autocommit%';
set sql_log_bin=0; # 关闭日志
set autocommit=0; # 关闭 autocommit 自动提交模式 # 查看默认是 4194304 = 4M ,我们修改为 400M 即 419430400
show VARIABLES like '%max_allowed_packet%';
# 注意要使用 global 设置否则不成功
set global max_allowed_packet= 419430400;

3)手动开启事务,并导入大SQL文件:

#  手动开启事务并导入
start transaction;
source C:/Users/mlamp/Desktop/cnarea20171031/cnarea20171031.sql
commit;

4)恢复默认参数:

#  恢复旧的配置
set sql_log_bin=1; # 打开日志
set autocommit=1; # 打开 autocommit 自动提交模式
set global max_allowed_packet= 4194304; # 修改为默认值

性能爆强 112M 的 70W 数据使用了 8.37 秒就导入完成!!!

参考:

mysql.conf配置文件的配置文档:https://dev.mysql.com/doc/refman/5.7/en/option-files.html

04-08 17:31
查看更多