Mysql 插入大量SQl文件包方法(速度快)


            MySQL max_allowed_packet

Mysql 5.6 遇到的信息包过大问题 用客户端导入数据的时候,遇到 错误代码: 1153 - Got a packet bigger than 'max_allowed_packet' bytes 终止了数据导入。
当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。
客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。一般情况下,服务器默认max-allowed-packet为1MB
 
以下操作是在Windows系统DOS命令窗口下进行的演练!!!!!!重点在于实战
 
【1】查看当前Mysql接收数据包的大小设置:
   命令如下-------------------------------------------------------
      show variables like '%max_allowed_packet%';

【2】修改:max_allowed_packet 为1000M  注:值可以改为更大,根据我们插入的Sql文件文件大小而定;

命令:-----------------------------------------------如下图

set global max_allowed_packet = 1000*1024*1024

【3】退出后,重新登录 mysql ,再次查看这个系统项的值, 注意,必须重新登录mysql,否则这个值还是显示为原始值(缓存)!

值变成1000M了

【4-1】我们刚才的修改是针对运行环境,但如果我们的配置文件不变,则重启数据库后,这个值又恢复为原始值了,对于 Windows 下的 MySQL,我们需要修改其配置文件 my.ini , 这个文件在 MySQL 的安装根目录下。

注意: MySQL 配置文件分为几个段 (Section), 包括 [mysql], [mysqld], [mysqldump] 等, 我们需要在 [mysqld] 段下添加配置项 : 

max_allowed_packet = 1000M

 

 

【4-2】在 Linux 中,MySQL 对应的配置文件是 my.cnf , 我们在Linux终端输入如下命令 : 

mysql --help | grep my.cnf

可以查看 MySQL 所使用的 my.cnf 列表(优先级列表,先找到的配置文件生效),MySQL 会逐个目录寻找这个文件,直到找到为止!

我们逐个目录找到我们系统 MySQL 所使用的 my.cnf 配置文件,找到对应的配置项,修改为 1000M 即可。

如何解决 MySQL max_allowed_packet 错误

在命令行窗口中使用source命令(source sql文件路径)导入sql文件,如下(我们可以看到,执行效率比较高):代码如下图

 

根据实际情况配置 max_allowed_packet 的大小

命令:Exit;--退出Mysql数据库。