SELECT...INTO OUTFILE 'file_name'形式的SELECT能够把被选择的行写入一个文件中。该文件被建立到服务器主机上,所以您必须拥有FILE权限,才能使用此语法。file_name不能是一个原有的文件。原有文件会阻止例如“/etc/passwd”的文件和数据库表被销毁。
SELECT...INTO OUTFILE语句的主要做用是让您能够很是快速地把一个表转储到服务器机器上。若是您想要在服务器主机以外的部分客户主机上建立结果文件,您不能使用SELECT...INTO OUTFILE。在这种状况下,您应该在客户主机上使用好比“mysql –e "SELECT ..." > file_name”的命令,来生成文件。
SELECT...INTO OUTFILE是LOAD DATA INFILE的补语;用于语句的exort_options部分的语法包括部分FIELDS和LINES子句,这些子句与LOAD DATA INFILE语句同时使用。参见(http://www.wzxue.com/db/mysql/05/15/20/)
FIELDS ESCAPED BY用于控制如何写入特殊字符。若是FIELDS ESCAPED BY字符不是空字符,则被用于在输出中对如下字符设前缀:
mysql
FIELDS ESCAPED BY字符sql
FIELDS [OPTIONALLY] ENCLOSED BY字符数据库
FIELDS TERMINATED BY和LINES TERMINATED BY值的第一个字符服务器
ASCII 0(在编写时接在转义符后面的是ASCII ‘0’,而不是一个零值字节)spa
若是FIELDS ESCAPED BY字符是空字符,则没有字符被转义,而且NULL被做为NULL输出,而不是做为\N输出。指定一个空的转义符不是一个好的主意。特别是当您的数据中的字段值包含刚被给予的清单中的字符时,更是如此。
其缘由是您必须对全部FIELDS TERMINATED BY, ENCLOSED BY, ESCAPED BY或LINES TERMINATED BY字符进行转义,才能可靠地读取文件并返回。ASCII NUL被转义,以便更容易地使用调页程序观看。
生成的文件没必要符合SQL语法,因此没有其它的字符须要被转义。
在下面的例子中,生成一个文件,各值用逗号隔开。这种格式能够被许多程序使用。
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;get