【MySQL】バッチモードでのクエリ実行内容と結果をログ出力する

やりたいこと

MySQLのデータベースをシェルスクリプトにて操作する。

その実行内容と結果をログとして残しておきたい。

手順

オプションを使用する。

-v –verbose

-vを追加すると実行クエリが標準出力されるようになる。

-vv -vvvという形で、vを追加するごとに出力内容も追加される。

以下はコマンド実行例。

% mysql -h {ホスト名} -u {ユーザ名} -D {データベース名}  --password={パスワード} -v -e "{クエリ}" >> {ログファイル名}

上記コマンドを元に、WordPressのテーブルに対するクエリ結果をshell.logに出力してみる。

% mysql -h {ホスト名} -u {ユーザ名} -D {データベース名}  --password={パスワード} -v -e "SELECT * FROM wp123456options ORDER BY option_id DESC LIMIT 1" >> shell.log

ログファイルの内容は以下。

% cat shell.log
--------------
SELECT * FROM wp123456options ORDER BY option_id DESC LIMIT 1
--------------

option_id       option_name     option_value    autoload
2930    _transient_feed_xxx    xxx    no

-vv

-vvでは実行したクエリの操作件数が付加される。

--------------
SELECT * FROM wp123456options ORDER BY option_id DESC LIMIT 1
--------------

option_id       option_name     option_value    autoload
2930    _transient_feed_xxx    xxx    no
1 row in set (0.00 sec)

Bye

-vvv

-vvvでは、実行結果がテーブル形式で出力される。

--------------                                              
SELECT * FROM wp123456options ORDER BY option_id DESC LIMIT 1
--------------

+-----------+------------------------------------------------------+--------------+----------+
| option_id | option_name                                          | option_value | autoload |
+-----------+------------------------------------------------------+--------------+----------+
|      2930 | _transient_feed_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | xxxxxxxxxx   | no       |
+-----------+------------------------------------------------------+--------------+----------+
1 row in set (0.00 sec)

Bye

コメントを残す

メールアドレスが公開されることはありません。