LinuxのコマンドラインからMySQLクエリを実行し、結果を出力する簡単な方法はありますか?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
からMySQLクエリ結果をテキストまたはCSVファイルに保存する:
SELECT order_id,product_name,qty
FROM orders
WHERE foo = 'bar'
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
注: この構文は次のように並べ替える必要があるかもしれません。
SELECT order_id,product_name,qty
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM orders
WHERE foo = 'bar';
MySQL の最近のバージョンでは。
このコマンドを使用すると、列名はエクスポートされません。
また、 MySQL を実行しているサーバー/var/lib/mysql-files/orders.csv
上にあることにも注意してください。MySQL プロセスを実行しているユーザーには、選択したディレクトリへの書き込み権限が必要です。権限がない場合、コマンドは失敗します。
リモートサーバー(特にホスト型または仮想化されたマシン)からローカルマシンに出力を書き込む場合は、ヘロクまたはアマゾンRDS)の場合、このソリューションは適切ではありません。