SELECT ... INTO OUTFILE 'file_name' 格式的 SELECT 将选择的记录行写入一个文件。文件被建立在服务器主机上,并且不可以是已存在的 (不管别的,这可以防止数据库表和文件例如 `/etc/passwd' 被破坏)。你必须在服务器主机上有 FILE 权限来使用这个形式的 SELECT。 SELECT ... INTO OUTFILE 主要是有意于让你能够在服务主机上快速地转储一个表。如果你希望将结果文件建立在其它的主机上,而不是服务器上,你就不能使用 SELECT ... INTO OUTFILE。在这种情况下,你应该使用某些客户端程序例如 mysqldump --tab 或 mysql -e "SELECT ..." > outfile 产生文件来代替它。 SELECT ... INTO OUTFILE 是 LOAD DATA INFILE 的逆操作;语句中的 export_options 部分的句法由 FIELDS 和 LINES 子句组成,它们与与用在 LOAD DATA INFILE 语句中的相同。查看章节 6.4.9 LOAD DATA INFILE 句法。 在结果文本文件中,只有下列的字符被 ESCAPED BY 指定的字符转义: 
ESCAPED BY 字符 
在 FIELDS TERMINATED BY 中的第一个字符 
在 LINES TERMINATED BY 中的第一个字符 
另外,ASCII 0 被转换到 ESCAPED BY 后而跟一个 0 (ASCII 48)。 上述行为的原因是,你必须 转义任何 FIELDS TERMINATED BY、ESCAPED BY 或LINES TERMINATED BY 字符,以便能可靠地将文件读回。ASCII 0 被转义是为了更容易地使用某些分页程序查看它。 因为结果文件并不需要遵从 SQL 句法,所以其它是不需要转义。 下面的例子得到的文件是可用于许多老程序的格式。 
SELECT a,b,a+b INTO OUTFILE "/tmp/result.text"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM test_table;如果使用 INTO DUMPFILE 代替 INTO OUTFILE,MySQL 将在文件中只写一行,没任何列或行端接和任何转义。如果你希望存储一个 blob 列到文件中,这是非常有用的。 
注意,任何由 INTO OUTFILE 和 INTO DUMPFILE 创建的文件将被所有用户可读写!原因是, MySQL 服务器不能够创建一个其他用户拥有的文件,(你决不应该以 root 身份运行 mysqld),该文件必须是公共可读写的,以便于你能操作它。 如果你以页/行锁使用在一个存储引擎上 FOR UPDATE,被检索的记录行将被写锁。