2014-01-14 19 views
5

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

は、ここで私が今やっているものです:

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

引用符で囲む必要がある列が多い場合には、だらしない、またはエスケープする必要がある結果で引用符がある場合、 。

+1

「SELECT * from MyTable from OUTFILE」を見てください。 MySQLのリファレンスは[このページ]にあります(http://dev.mysql.com/doc/refman/5.6/en/select.html) –

+0

--tabを使用したmysqldumpは、追加のスクリプティング要件がなくても簡単な方法です。私は[MySQLをCSVに変換する3つの方法](http://kedar.nitty-witty.com/blog/export-mysql-database-table-to-csv-delimited-excel-file)を詳しく書いています。 –

答えて

9

あなたが "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 '"'を追加する必要があります - これは、追加します二重引用符