SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
MySQL中,可使用SELECT...INTO OUTFILE语句将表的内容导出为一个文本文件。其基本的语法格式以下:数据库
SELECT [列名] FROM table [WHERE 语句] INTO OUTFILE '目标文件' [OPTION];
该语句分为两个部分。前半部分是一个普通的SELECT语句,经过这个SELECT语句来查询所须要的数据;服务器
后半部分是导出数据的。其中,“目标文件”参数指出将查询的记录导出到哪一个文件中;编码
“OPTION”参数为可选参数选项,其可能的取值有:spa
FIELDS和LINES两个子句都是自选的,可是若是两个子句都被指定了,FIELDS必须位于LINES的前面。操作系统
该语法中的“目标文件”被建立到服务器主机上,所以必须拥有文件写入权限(FILE权限)后,才能使用此语法。同时,“目标文件”不能是一个已经存在的文件。code
SELECT...INTO OUTFILE语句能够很是快速地把一个表转储到服务器上。若是想要在服务器主机以外的部分客户主机上建立结果文件,则不能使用SELECT...INTO OUTFILE语句。blog
LOAD DATA INFILE "/path/to/file" INTO TABLE table_name; 注意:若是导出时用到了FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'语句,那么LOAD时也要加上一样的分隔限制语句。还要注意编码问题。
举个栗子:字符串
导出example数据库下employee表的记录。其中,字段之间用“、”隔开,字符型数据用双引号括起来。每条记录以“>”开头。SQL代码以下:table
SELECT * FROM example.employee INTO OUTFILE 'D:/tmp/emp.txt' FIELDS TERMINATED BY '\、' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
FIELDS必须位于LINES的前面,多个FIELDS子句排列在一块儿时,后面的FIELDS必须省略;一样,多个LINES子句排列在一块儿时,后面的LINES也必须省略。class
若是在employee表中包含了中文字符,须要注明编码格式, CHARACTER SET gbk|utf8 语句,SQL代码以下:
SELECT * FROM example.employee INTO OUTFILE 'F:/tmp/emp.txt' CHARACTER SET utf8 FIELDS TERMINATED BY '\、' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
“TERMINATED BY '\r\n'”能够保证每条记录占一行。由于Windows操做系统下“\r\n”才是回车换行。若是不加这个选项,默认状况只是“\n”