こんにちは、さるまりんです。
今回はMySQLでクエリの結果をファイルに出力する方法です。
以前も書いたのですが別のシンプルな方法がありましたので残しておきます。
echo SQL文 | mysql -B -u DBユーザー -h DBホスト -pDBパスワード -D DB名 > 出力ファイルパス
実際の例です。
$ echo 'SELECT name, country, birthyear FROM composers ORDER BY name' | mysql -B -u salu -h 127.0.0.1 -psalupswd -D saludb > ~/db/composers.tsv
これでファイル~/db/composers.tsv
にデータベースsaludb
のテーブルcomposers
(作曲家)からname
(名前)の順で抽出されたname
、country
(国)、birthyear
(生誕年)がTSV(タブ区切り)で出力されます。
TSVではなくCSV(カンマ区切り)でほしい時もありますよね。
そのときはタブ文字をカンマに置換です。
cat TSVファイルのパス | tr "\\t" "," > CSVファイルのパス
上のファイルをCSVにしています。
$ cat ~/db/composers.tsv | tr "\\t" "," > ~/db/composers.csv
データの中にカンマが含まれていたらこの方法は使えないので注意が必要です。
DBの全レコードをファイルに吐き出す必要があったのですが、mysqldump
が権限がないため使えずでどうしようかと考えていたらこんな方法がありました。
いろんな方法で問題解決、まだまだ勉強です。
読んでくださってありがとうございました。
それではまた!