1. ホーム
  2. mysql

[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?

2022-03-15 16:21:04

質問

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

引用符で囲まなければならない列がたくさんある場合や、結果に引用符が含まれていてそれをエスケープする必要がある場合は、面倒なことになります。

どのように解決するのですか?

から 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 の最近のバージョンでは

このコマンドを使用すると、カラム名はエクスポートされません。

また /var/lib/mysql-files/orders.csv サーバー を実行します。MySQL プロセスが実行されているユーザは、選択したディレクトリに書き込む権限を持っている必要があり、さもなければコマンドは失敗します。

リモートサーバーからローカルマシンに出力を書き込む場合、(特に ヘロク または アマゾンRDS ) の場合、この解決策は適切ではありません。