mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

MariaDB(MySQL) - シェル(Bash)スクリプトで複数 SQL 実行!

[ サーバ構築 ] [ MariaDB, MySQL, bash, シェル ]

こんにちは。

シェルスクリプト(今回は Bash)内で MariaDB(MySQL) の SQL を実行する際、 -e or --execute オプションを使用することが多いと思います。

しかし、複数の SQL(特にトランザクション処理)を実行する際、このオプションではワンライナーにするしかありません。

別ファイルにした SQL を取り込むことも可能ですが、それだと Bash の引数が渡せません。

以下、Bash スクリプト内でワンライナーにせず、ヒアドキュメントを使用して複数 SQL を実行する例です。(Bash 引数渡しも可)

0. 前提条件

  • Bash スクリプトを想定。

1. Bash スクリプト

以下のような Bash スクリプトを作成する。
ヒアドキュメント内に Bash 引数が渡せる。また、トランザクションも効く。

tesh.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DB=test_db
USER=foo
PW=xxxx
TBL1=test_tbl_1
TBL2=test_tbl_2
TBL3=test_tbl_3

mysql -u $USER -p$PW $DB <<EOS
START TRANSACTION;

UPDATE $TBL1 SET col = 'aaaa' WHERE id = 1;
UPDATE $TBL2 SET col = 'bbbb' WHERE id = 2;
UPDATE $TBL3 SET col = 'cccc' WHERE id = 3;

COMMIT;
EOS

MariaDB(MySQL) のバージョンによっては、mysql コマンドで直接パスワードを指定すると Bash スクリプト実行時にセキュリティに関する警告が出るかも知れませんが問題ありません。


Bash スクリプトのみで複数の SQL 文を実行したい場合に役立つと思います。

以上。

Comments