前言

最近在工作中遇到了MYSQL数据库导入超大SQL文件的情况,使用Navicat会报错导致数据不全,但是直接使用source会导入非常之慢,具体原因是:

由于导出的数据没有经过批处理,所以文件内部都是insert语句,原来在默认情况下,当你去执行某个.sql文件的时候事物是自动提交的,也就是说insert一次提交一次,这样大大拖延了导入的速度。

第一种方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

1、进入mysql
mysql -u root -p

2、输入数据库密码

3、创建数据库(如果已经有数据库忽略此步骤)
CREATE DATABASE 数据库名;

4、设置参数
set sql_log_bin=OFF;//关闭日志
set autocommit=0;//关闭autocommit自动提交模式 0是关闭 1 是开启(默认)

5、使用数据库

use 数据库名;

6、开启事务
START TRANSACTION;

7、引入SQL文件
source 文件的路径;
在此处会引入sql文件,也就是你的insert;
8、成功后事务提交
COMMIT;

第二种方式

1.修改mysql配置

需要修改 my.ini文件,文件在数据库安装目录下:

img

用记事本打开后,在[mysqld]标签下添加如下配置(可以根据情况自行调整)

1
2
3
4
# 导入大于5G的数据添加的配置
max_allowed_packet = 6000M
wait_timeout=288000000
interactive_timeout= 288000000

img

2.创建数据库

数据导入之前,你需要创建一个数据库,来确定数据导入的位置。
建议:创建一个与原数据库一致的新库进行导入。

3.导入数据库

使用命令行进行导入

img