シェルスクリプトで MySQL のデータを使う
Posted on
シェルスクリプトで MySQL のデータを使うにはバッチモードを使います。
あらかじめ実行したい SQL を用意しておいて、mysql コマンドへリダイレクトします。
$ vi batch.sql
SELECT NOW();
$ mysql -u user -p -N db_name < batch.sql
2013-03-07 11:08:09
バッチモードで実行した場合は、実行結果に枠線が付きません。また実行結果にカラム名が表示されているとシェルスクリプトで扱いにくいので、N オプションで列名を出力しないようにしています。
ユーザ名とパスワードは defaults-extra-file で指定する
シェルスクリプトから mysql コマンドを実行する場合、ユーザ名とパスワードの扱いが面倒です。シェルスクリプト内に書いてしまうと環境に依存してしまうからです。
defaults-extra-file オプションを使うとユーザ名とパスワードをシェルスクリプトから分離できます。適当な場所に mysql セクションだけ書いたcnfファイルを用意しておき、実行時にそれを読み込みます。
$ cat /usr/local/etc/my.cnf
[mysql]
user = user
password = password
$ mysql --defaults-extra-file=/usr/local/etc/my.cnf -N db_name < batch.sql
2013-03-07 11:08:09
シェルスクリプトの構文を組み合わせれば、MySQL のストアドプロシージャより柔軟に処理できそうです。