如何从MySQL中导出UTF-8格式的csv文件

11

我想使用命令直接从MySQL导出CSV文件

SELECT .... 
FROM ...
INTO OUTFILE '/tmp/export.csv' 
FIELDS TERMINATED BY ',' 
ESCAPED BY '\\'
LINES TERMINATED BY '\n' ;

这个工作完美运行,但编码不是utf8。如何将内容导出为utf8编码?


请看一下这个链接,你会有些想法。http://stackoverflow.com/questions/17108249/export-data-from-mysql-to-excel-with-utf-8-encoding - piyush pankaj
1个回答

23
根据SELECT ... INTO 语法文档所述:

SELECT ... INTO OUTFILELOAD DATA INFILE 的补充。列值将被写入指定在 CHARACTER SET 子句中的字符集。如果没有这样的子句,则使用 binary 字符集转储值。实际上,没有任何字符集转换。如果结果集包含多个字符集的列,则输出数据文件也将如此,您可能无法正确重新加载文件。

语法在SELECT 语法下有文档记录:
    [INTO OUTFILE '<strong><em>file_name</em></strong>'
      [CHARACTER SET <strong><em>charset_name</em></strong>]
因此:
SELECT .... 
FROM ...
INTO OUTFILE '/tmp/export.csv'
CHARACTER SET utf8 
FIELDS TERMINATED BY ',' 
ESCAPED BY '\\'
LINES TERMINATED BY '\n' ;

#1064 - 您的SQL语法有误;请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,靠近'CHARACTER SET utf8'。 - cawecoy
@cawecoy:请查看如何修复MySQL错误#1064? - eggyal
@eggyal,问题在于你所写的代码似乎存在语法错误,因为phpmyadmin中没有出现utf8选项。http://i.imgur.com/jYKZqjI.png - barlop
对于Windows用户,请以以下方式编写路径:c:/temp/export.csv - Dor Cohen
请注意:使用 SHOW CHARACTER SET; 命令获取可用字符集列表。 - Balmipour
2
请注意,MySQL的“utf8”字符集无法处理4字节的Unicode字符。如果您的utf8导出在某些字符上引起错误,请改用CHARACTER SET utf8mb4 - Balmipour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接