MySQLでクエリの結果をファイルに出力する方法 Part 2

こんにちは、さるまりんです。

今回は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(名前)の順で抽出されたnamecountry(国)、birthyear(生誕年)がTSV(タブ区切り)で出力されます。

TSVではなくCSV(カンマ区切り)でほしい時もありますよね。

そのときはタブ文字をカンマに置換です。

cat TSVファイルのパス | tr "\\t" "," > CSVファイルのパス

上のファイルをCSVにしています。

$ cat ~/db/composers.tsv |  tr "\\t" "," > ~/db/composers.csv

データの中にカンマが含まれていたらこの方法は使えないので注意が必要です。

DBの全レコードをファイルに吐き出す必要があったのですが、mysqldumpが権限がないため使えずでどうしようかと考えていたらこんな方法がありました。

いろんな方法で問題解決、まだまだ勉強です。

読んでくださってありがとうございました。

それではまた!