[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

シェルスクリプトで 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 のストアドプロシージャより柔軟に処理できそうです。