動かざることバグの如し

近づきたいよ 君の理想に

MySQLで取得した結果をCSVに出力する

自分用メモ

INTO OUTFILEを使う場合

MySQLサーバーがオンプレミスの場合はこっち

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

スクリプト経由で出力する場合

クラウドのサーバーだと権限的にINTO OUTFILE使おうとすると

ERROR 1045 (28000): Access denied for user '{ユーザ名}'@'%' (using password: YES)

ってなる。つまり権限がない

そんなときはパイプを使う

mysql -h example.com -uuser -p mydatabase -e "select * from users" | sed -e 's/\t/","/g' > /tmp/users.csv

1セルごとに「"」で囲みたい場合は以下

mysql -h example.com -uuser -p mydatabase -e "select * from users" | sed -e 's/^/"/g' | sed -e 's/$/"/g' | sed -e 's/\t/","/g' > /tmp/users.csv

参考リンク