web-dev-qa-db-ja.com

MySQLクエリからCSV

MySQLコマンドラインからlinuxクエリを実行してcsv形式で結果を出力する簡単な方法はありますか?

これが私が今やっていることです:

mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/        /,/g' | tee
list.csv select id, concat("\"",name,"\"") as name from students EOQ

引用符で囲む必要のある列が多数ある場合、またはエスケープする必要のある結果に引用符がある場合は、乱雑になります。

10
vinay

INTO OUTFILE」を使用できます

つまり.

SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 

これにより、各行の間にカンマを含むファイル「ca.csv」が作成されます。フィールド値のエスケープなど、他にもいくつかのオプションがありますが、それで十分です。

全部:

mysql -u uid -ppwd -D dbname -e "SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';"

[〜#〜] edit [〜#〜]:-参照するリンク: SELECT INTO

フィールドをエスケープするには、FIELDS ESCAPED BY '"'を追加する必要があります-これにより二重引用符が追加されます

11
Doug