如果仅需要表中的数据而不需要连表结构一起导出的话,推荐使用MySQL自带的into outfile和load data命令来进行表数据的导出和导入。这种导出方式更为高效,但是在进行表数据导出时不包含表结构,所以需要先备份表结构,然后恢复表结构后再进行表数据的导入。
一、into outfile导出表数据
1、导出MySQL表数据示例
mysql > select * from db1.t1 where a>900 into outfile '/tmp/t1.csv';
mysql > select * from school.class into outfile '/data/backup/class.csv'; #导出class表
2、自定义字段分隔符,如果导出的时候定义了分隔符,在导入的时候也同样需要指定分隔符,效果如图
mysql > select * from school into outfile '/data/backup/school2.txt' fields terminated by '---'
二、load data导入表数据示例
LOAD DATA INFILE '/data/backup/class.csv' INTO TABLE school.class;
三、导出数据注意事项
1、into outfile语句导出的结果只能保存在服务端。如果执行命令的客户端和MySQL服务端不在同一个机器上,那么客户端是不会生成文件的。
2、into outfile受到数据库参数secure_file_priv限制。如果secure_file_priv为empty代表不限制文件保存位置;如果设置为一个路径,则导出文件只能存放于指定目录或它的子目录;如果设置为NULL表示禁止进行select … into outfile操作
3、into outfile命令不会覆盖文件,需要自己确保保存目录下的文件不存在,否则执行语句时就会因为有同名文件的存在而报错
4、导出的文件中的每一行原则上会对应数据库中的每一行数据。但是如果字段中包含换行符,在生成的文本中也会有换行符。不过类似换行符、制表符这类符号,前面都会跟上“\”这个转义符,这样就可以跟字段之间、数据行之间的分隔符区分开