mysql数据手工导入时的参数

以前使用mysqldump不使用--skip-opt参数导出的文件是批量插入方式的,但是在到目标库导入时常报错:超出max_allowed_packet的错误,所以后来导出时使用创建单条插入语句的方式。表太大后这种方式导入的速度太慢!

从Mysql5.1的文档里查到下面的一些参数。

mysql导数据前先检查下目标数据库的两个参数:

show variables like 'max_allowed_packet';
show variables like 'net_buffer_length';

然后在导出时添加下面的一些参数,例如:
mysqldump -u XXX-pXXX -hXXX mine_3_0 p_searching_info --skip-opt --create-option --set-charset --default-character-set=gbk  -e --max_allowed_packet=1047552 --net_buffer_length=8190 > p_searching_info.sql

上面的参数的值不能大于目标库里设置的范围,否则导入时会失败。上面的值是228的数据库上允许的最大值。

-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。

导入时使用:
mysql -uXXX -pXXX mine_3_0 --default-character-set=gbk <p_searching_info.sql &

这样的参数导出的insert语句也是批量插入语句,但同时不会把所有数据都写在一行里。现在导入时的速度会远快于一条条的插入。没有实验 --delayed-insert参数。