InnoDB大批量导出导入数据
使用 infile
和 outfile
代替 mysqldump
,因为 mysqldump
会导出大量的表结构语句
-
outfile
导出数据# 导出数据文件后缀可以自己定义 # 通过 fields terminated 定义列与列之间的分隔符 # lines terminated 定义行与行之间的分隔符 # 分隔符默认使用 , 和 \n # 指定导出表的某些列,例如 select id, name # 指定导出时排序,例如 from table_name order by id,这样会加快导入的速度,因为 InnoDB 表是按照主键顺序保存数据的 select * from table_name order by id into outfile 'F://sql.log' fields terminated by ',' lines terminated by '\n';
导出的数据格式如下,例如
id,name,enabled,create_time
四列, -
load data infile
导入数据# 关闭唯一性校验和事务自动提交加快导入速度 # 关闭唯一性校验,0:关闭;1:开启 set unique_checks=0; # 关闭事务自动提交,0:关闭;1:开启 set autocommit=0; # 导入的表结构要与旧表一致,否则导入数据时类型不匹配 # table_name后面不能指定列名(可能与MySQL版本有关) # into后可以接ignore来忽略逐渐冲突的错误 load data infile 'sql.log' into ignore table table_name fields terminated by ',' lines terminated by '\n';