バッチ処理などで定期的に、DBの値を更新したりしたい場合があります。
その場合は、シェルスクリプトでSQLを実行しそれをcronなどで定期的に呼び出すようにするのが一般的です。

シェルスクリプトからSQLを実行する場合は、以下の3つの書き方があります。

1.SQL文とシェルスクリプトを分ける方法
update.sqlというファイルに実行したいSQLを予め記述しておき、以下のように記述。

1
$ mysql -u [ユーザー] [DB名]

SQL文を別ファイルで分けられるので、使い勝手がよくシェルスクリプトも見やすくなります。

2.-eオプションで実行
-eオプションを使えば、そのままSQLを記述して実行できます。

1
$ mysql -u [ユーザー] [DB名] "update hoge SET id = 1;"

簡単なSQL文の場合はこれでいいかもしれません。

3.ヒアドキュメントを使う
長いSQL分や、複数のSQLを実行したい場合はヒアドキュメントを使うのが便利です。

1
2
3
$ mysql -u [ユーザー] [DB名] <<eof begin="" update="" hoge="" set="" id="1" where="" user_id="1;" commit="" eof="">
<p>※この記事は、なかの人(<a href="https://cloudpack.jp/meister/#07" target="_blank">moresmileman</a>)が書いています。</p>
</eof>