豫ICP备17040950号-2

MYSQL快速导入大SQL文件

规模小的项目一般使用MYSQL数据库,有自动脚本,每天定时生成.SQL脚本数据库备份。如果某天BOSS突然反馈说业务侧操作失误或者需要恢复到昨天的整库数据,排除使用BINLOG方式恢复。但是生产导出的.sql文件脚本有几百M大小。按照传统方式去导入脚本,导入速度非常慢,耗时太长,均值情况下至少2,3个小时。恢复数据时间太长,业务侧和BOSS都有意见,顾而找到了如下的这种方法:
原来在默认情况下,当你去执行某个.sql文件的时候事物是自动提交的,也就是说insert一次提交一次,这样大大拖延了导入的速度;在使用一下这种方式之后50多万的数据,比起自动提交的导入来说快了不少,以前需要几个小时才能导入的数据,一两分钟就导入完了,以下是具体的使用方法:


1、切到mysql命令行

1
mysql -u root  -P 3306 -p

2、输入数据库密码

3、创建数据库

1
2
//如果已经有数据库忽略此步骤
CREATE DATABASE 数据库名;

4、使用数据库

1
use 数据库名;

5、设置会话参数

1
2
3
4
//关闭日志
set sql_log_bin=OFF;
//关闭autocommit自动提交模式[0:关闭,1:开启]
set autocommit=0;

6、开启事务

1
START TRANSACTION;

7、设置导入文件的编码

1
set names utf8;

8、导入SQL文件

1
source 文件的路径;

9、成功后事务提交

1
commit;

《小知识》

1、SET NAMES显示客户端发送的SQL语句中使用什么字符集。保证插入每条数据 编码与数据库相同 防止乱码。

2、查看当前的autocommit属性值show variables like 'autocommit';