原理を知らんかったんで調べてみたメモ
環境
$ mysql --version mysql Ver 14.14 Distrib 5.7.24, for osx10.14 (x86_64) using EditLine wrapper
やり方
--execute
もしくは -e
を使うとコマンドラインでMYSQLのクエリを実行できる。
その結果をパイプして出力するとtab区切りで出てくる
$mysql --execute "何かクエリ;" > 出力したいファイル
例
$ mysql -uroot -Dsample_app_development -e "SELECT id, name FROM users ORDER BY id DESC LIMIT 3;"
とすると以下のように出力される
$ mysql -uroot -Dsample_app_development -e "SELECT id, name FROM users ORDER BY id DESC LIMIT 3;" +----+------+ | id | name | +----+------+ | 15 | Goto | | 14 | Sato | | 13 | Ziro | +----+------+ $
これをファイルに出力すると以下のように出力される
$mysql -uroot -Dsample_app_development -e "SELECT id, name FROM users ORDER BY id DESC LIMIT 3;" > sample.tsv
id name 15 Goto 14 Sato 13 Ziro
原理
MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.1.1 mysql のオプション 曰く
--execute=statement, -e statement
ステートメントを実行して、終了します。デフォルトの出力形式は、--batch で生成されるものと同様です。
とあり、batchをみると
--batch, -B
カラム区切り文字としてタブを使用し、各行を新しい行に出力します。このオプションでは、mysql は履歴ファイルを使用しません。
ということで、batchのデフォルトがタブ区切りだからこの形式になる。