[MySQL] command からクエリ実行して CSV ファイルに出力する

Linux CLI から MySQL クエリを実行した結果を CSV ファイルに出力する方法をご紹介します。

MySQL

MySQL へクエリ実行して CSV ファイル出力する command

MySQL クエリを実行して CSV ファイル出力する command は以下のとおりです。

mysql -u [username] -p -h [host] [dbname] -e "[実行クエリ]" \
| sed -e 's/\t/,/g' \
> [Output CSV file path]

処理の解説:

  1. mysql -e オプションで CLI からクエリを実行する
  2. クエリ実行結果を sed コマンドでタブ文字 \t を , へ置換する
  3. sed で置換した結果をリダイレクタ > でファイルへ出力する

実用例 header 有り

1行目の header 有りのサンプルコマンドです。

mysql -p test -e \
"select utm_campaign, count(*), sum(num_purchase) from customers where utm_campaign = 'hoge';" \
> output.csv

実用例 header 無し

1行目の header 無しのサンプルコマンドです。-N オプションを付けてヘッダーを表示させないことができます。

mysql -u [username] -p -h [host] [dbname] -N -e \
"select utm_campaign, count(*), sum(num_purchase) from customers where utm_campaign = 'hoge';" \
| sed -e "s/\t/,/g" \
>> output.csv

以上、MySQL クエリ実行結果を CSV ファイルへ保存したい、現場からお送りしました。