コマンドでmysqlからcsvを直接エクスポートしたい
SELECT ....
FROM ...
INTO OUTFILE '/tmp/export.csv'
FIELDS TERMINATED BY ','
ESCAPED BY '\\'
LINES TERMINATED BY '\n' ;
これは完全に機能しますが、エンコードは utf8 ではありません。コンテンツを utf8 エンコーディングでエクスポートするにはどうすればよいですか?
SELECT ... INTO
Syntaxの下に記載されているように:
SELECT ... INTO OUTFILE
の補数ですLOAD DATA INFILE
。CHARACTER SET
列の値は、句で指定された文字セットに変換されて書き込まれます。そのような句が存在しない場合、binary
文字セットを使用して値がダンプされます。実際には、文字セットの変換はありません。結果セットに複数の文字セットの列が含まれている場合、出力データ ファイルも同様であり、ファイルを正しくリロードできない場合があります。
SELECT
文法はSyntaxで文書化されています:
[INTO OUTFILE 'file_name' [CHARACTER SET charset_name]
したがって:
SELECT ....
FROM ...
INTO OUTFILE '/tmp/export.csv'
CHARACTER SET utf8
FIELDS TERMINATED BY ','
ESCAPED BY '\\'
LINES TERMINATED BY '\n' ;