JavaScriptをがんばるブログ

React,OSS,ソフトウェア開発が中心のブログです👨‍💻

mysql -NBe の意味

ansibleの見本taskで出てくるけどなかなか覚えられんヽ(´Д`ヽ

シングルダッシュ ダブルダッシュ 説明
-N –skip-column-names 結果にカラム名を記述しません。
-B –batch タブとして、カラムセパレータを使用することで、各行が新しいライン上に配置されるように、結果をプリントします。このオプションでは、MySQLはヒストリファイルを使用しません。
-e statement –execute=statement ステートメントを実行し、やめます。デフォルトの出力フォーマットは、–batchで生成されるものと類似しています。

引用元
オプション一覧 - MySQL総合情報

意味を見てもイマイチ理解できなかったので、
-NBeの出力とそれぞれのオプションを除いた出力を比較してみた。

# -NBe
tokyorefrain@tokyorefrain ~/r/daily-tweet> mysql -NBe 'SELECT * FROM dailytweet.user WHERE 1' -u root -p
Enter password: 
2  1664570156 2015-09-22 00:48:07 2016-03-17 16:38:23 malloc007   1  709731398731476992 2016-03-17 16:38:23

# -Nなし
tokyorefrain@tokyorefrain ~/r/daily-tweet> mysql -Be 'SELECT * FROM dailytweet.user WHERE 1' -u root -p
Enter password: 
id  twitter_id  create_at   update_at   username    is_active   today_since_id  since_id_at
2  1664570156 2015-09-22 00:48:07 2016-03-17 16:38:23 malloc007   1  709731398731476992 2016-03-17 16:38:23

# -Bなし
tokyorefrain@tokyorefrain ~/r/daily-tweet> mysql -Ne 'SELECT * FROM dailytweet.user WHERE 1' -u root -p
Enter password: 
+---+------------+---------------------+---------------------+-----------+---+--------------------+---------------------+
| 2 | 1664570156 | 2015-09-22 00:48:07 | 2016-03-17 16:38:23 | malloc007 | 1 | 709731398731476992 | 2016-03-17 16:38:23 |
+---+------------+---------------------+---------------------+-----------+---+--------------------+---------------------+

# -eなし ※SELECT文の文字列リテラルがdatabase名の引数であると解釈された
tokyorefrain@tokyorefrain ~/r/daily-tweet> mysql -NB 'SELECT * FROM dailytweet.user WHERE 1' -u root -p
Enter password: 
ERROR 1049 (42000): Unknown database 'select * from dailytweet.user where 1'

まとめ

  • -N 出力のヘッダにカラム名を表示する(CSVヘッダ的なやつ)
  • -B 出力結果の区切りをtabにする
  • -e 引数に渡した文字列リテラルSQL構文として実行する