MySQL:結果をファイルに出力する

最終更新日時:2014-04-10 17:59:11
MySQL

SELECT の結果をファイルに出力する方法です。

 SELECT * FROM test01_table INTO OUTFILE /tmp/test01.txt


単純にファイルに出力するだけであれば上記でOKですが、これだと、普通にコマンドラインでリダイレクトして保存するのと大して変わりません。
INTO OUTFILE で若干うれしいのは、出力時の区切り文字や囲む文字を指定することが出来ることです。
疑似 CSV な形式で出力するのであれば、以下のように指定します。

 SELECT * FROM test01_table INTO OUTFILE /tmp/test01.csv FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; 


ただ、データ中にダブルクォートが入っていたり、改行を含むデータだったりする場合には、正しい CSV としては出力できないので、真面目に出力するプログラムを作らないといけなさそうです(^_^;

文字コードについて


INTO OUTFILE な機能は、サーバ側でファイルに出力をする機能なので、ファイルの owner もサーバの uid(通常 mysql)となります。
そのせいなのか、、、よく理解していないのですが、INTO OUTFILE でファイルに出力する際には、set names utf8 のような文字コード指定が利きません。
何を指定しても、show table status で表示される、そのテーブルの文字コードで出力されてしまう、、、ように見えます。
従って、現状では、INTO OUTFILE で出力するデータの文字コードを指定したい場合には、出力後に変換するしかなさそうです。。。

お問い合わせは 掲示板 にて。