mita2 database life

主にMySQLに関するメモです

mysql コマンドを使ってシェルスクリプトを綺麗に書くコツ

mysql コマンドは -e で実行するSQLを指定できる。
セミコロンで区切れば複数のSQLを同時に実行することもできる。

$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+

-e を複数指定して、これでもいける。複数行に分けて書く時に自然。

$ mysql -e 'select 1;' \
>       -e 'select 2'

-e で指定した文字列を単に結合して実行しているようで、セミコロンをなくしてしまうと文法エラーになる。

$ mysql -e 'select 1 ' \
>       -e 'select 2'
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for
the right syntax to use near 'select 2' at line 1

ということは、逆にこういう書き方も可能ということがわかった。

$ mysql \
> -e 'SELECT *' \
> -e '  FROM mysql.user' \
> -e ' WHERE User = "root"'

シェルスクリプトが綺麗に書けそうです。