phpMyAdminで、SQLのSELECTした内容をCSVなどでファイル出力する方法

MySQL実行したSQLをそのままCSVやtab区切りで出力したい場合がありますよね。
phpMyAdmin(コマンドラインでも同じですが)で実行するSQLのFROMの前に下記のようにINTO OUTFILE ~ を追加すると実行結果をファイル保存できます。

---------
例)

SELECT *
INTO OUTFILE “/var/www/html/test/data.csv”
FIELDS TERMINATED BY ‘,’
OPTIONALLY ENCLOSED BY ‘”‘
ESCAPED BY ‘”‘
LINES TERMINATED BY ‘\n’
FROM test2
---------

・INTO OUTFILE “/var/www/html/test/data.csv”
パスはサーバー上のパスです。書込み権限が必要です。
Windowsなら ”c:\\temp\\data.csv” のように指定します。

※ファイルが存在するとエラーになるので、ファイル名を変える等してください。

・ FIELDS TERMINATED BY ‘,’
値の区切り文字です。

・ OPTIONALLY ENCLOSED BY ‘”‘
文字型の値の場合に値を囲む文字です。

・ESCAPED BY ‘”‘
値中に上記「OPTIONALLY ENCLOSED BY」で指定した文字が含まれる場合は、「ESCAPED BY」で指定した値でエスケープしてくれるようなので、エクセルで利用するなら、「OPTIONALLY ENCLOSED BY」も「ESCAPED BY」も”(ダブルクォート)を指定すればいいはずです。

・LINES TERMINATED BY ‘\n’
1レコードの最後をあらわす記号です。

あとは、エクセルで利用するならエディタで開いて、Shift-JISで保存する等して文字コードを Shift-JISにすれば完了です。

phpMyAdminや、コンソールに表示された実行結果をエクセルにコピペして、エクセル上で綺麗な形に加工して。。。あっ、抽出方法間違えたってなって、また作業しなおし、、、とか、かなり手間で無駄な作業なので絶対にしたくありませんね!!(昔、結構やってました。。。)

以上です。

MySQLでBOLB型のソートの注意点

MySQLでBOLB型のフィールドをソートする場合、CASTで数値型や日付型にするなり、SUBSTRINGで固定長の文字列に変換して、ORDER BY に指定する必要があります。

例)

SELECT *

FROM tb1

ORDER BY CAST(bob_fd1 AS SIGNED)