定期的にDBパッチするシェルスクリプト

以下は、10秒おきに10件のレコードを100回insertするサンプルで、試験用に作成したのを簡略化したものです。SQL文を作って実行してるだけなのでupdateにも応用できるだろうけど、あまり用途はなさそう。。

#!/bin/sh

SQL_FILE="tmp.sql"
ONE_TIME=10
SLEEP_TIME=10 # sec
TOTAL=1000

i=0
while true
do
  let disp=${i}+1
  echo "--- Start ${disp}〜 ---"
  cat /dev/null > ${SQL_FILE}

  j=0
  while true
  do
    printf "insert into table_name values ( \
            '000%04d', '0801234%04d', 'hoge', 'foo', 'var', sysdate );\n" \
            ${i} ${i} >> ${SQL_FILE}
    let i=${i}+1
    let j=${j}+1
    if [ ${j} -ge ${ONE_TIME} ]; then
      break
    fi
  done

  sqlplus $ORACLE_USR/$ORACLE_PWD@$ORACLE_SID < ${SQL_FILE} # Oracle DB

  if [ ${i} -ge ${TOTAL} ]; then
    break
  fi

  echo "--- 〜${i} End ---"
  echo "--- ${SLEEP_TIME} sec. sleep start ---"
  sleep ${SLEEP_TIME}
  echo "--- ${SLEEP_TIME} sec. sleep end ---"
done

rm -f ${SQL_FILE}

最近、シェルスクリプトを書く機会が多いからか、気が付けばブログがシェルスクリプトばかりになってしまっている・・