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_bin
、autocommit
、max_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