ワイランナーでmysqlからデータを操作する。〜mysqlオプション編〜


概要

  • 通常、bashなどのCLI上からmysqlからデータを取得したい場合、
mysql
$ mysql -u ${user} -p 
mysql >
...

のような形で起動してmysqlのデータを確認したりしていると思いますが、オプションの-eを使うとbashのCLI上でデータ操作が可能になります。

--execute=statement, -e statement
ステートメントを実行して、終了します。デフォルトの出力形式は、--batch で生成されるものと同様です。例については、セクション4.2.4「コマンド行でのオプションの使用」を参照してください。このオプションでは、mysql は履歴ファイルを使用しません。
4.5.1.1 mysql のオプション

実例

mysql
$ mysql -u ${user} -p -D ${db_name} -e "select * from ${table_name}";
Enter password: 
+--------------+---------------------+
| id    | created_at                 |
+--------------+---------------------+
| aaaaa | 2016-04-18 18:07:42.000000 |
| bbbbb | 2016-04-18 18:07:42.000000 |
+--------------+---------------------+

※カラム名は例です。

Tips集

ちなみに取得データをファイルに落としたい場合もあるとおもいます。その場合は、リダイレクトを利用してファイルに落とすことも可能です。
リダイレクションの「>」「 >>」とパイプ「 | 」の違い。

mysql
$ mysql -u root -p -D memberprovision -e "mysql -u ${user} -p -D ${db_name} -e "select * from ${table_name}" > test.list
Enter password: 

$ head -n 10 test.list 
id  created_at
aaaaa   2016-04-18 18:07:42.000000
bbbbb   2016-04-18 18:07:42.000000

また、取得したものの中でヘッダー部分がいらない場合は、オプション「-B」と「-N」をつけます。
そうすると「id」と「created_at」が消えます。

bash
$ mysql -u root -p -D memberprovision -B -N -e "mysql -u ${user} -p -D ${db_name} -e "select * from ${table_name}" > test.list
Enter password: 
$ head -n 10 test.list 
aaaaa   2016-04-18 18:07:42.000000
bbbbb   2016-04-18 18:07:42.000000

以上です。他にもこんなTipsあるよという方はぜひコメントください!