Cygwin + SQL*Plus によるデータ登録シェルスクリプト

業務で大量のテストデータを登録する必要が有ったので、いつもならUnix上で実行するスクリプトを少し修正したらCygwin上でも動作したので備忘録として整理しておきます。

kshで対応する場合は、以前の日記が参考になると思います。

#!/bin/csh

set USERNAME=<ユーザ名>
set PASSWORD=<パスワード>

set START=<開始カウント 例:1>
set STOP=<終了カウント 例:1001 <= 終了させたい数より1つ多くする>

set SQLPLUS=

# 指定された回数分、ループを実施
while ( ${START}<${STOP} )

# カウンターの加工例として10桁として0パディングを実施
set COUNT=`echo $START | awk '{ printf "%010d", $1 }'`
echo ${COUNT}

# SQL*Plusをサイレントモードで起動し、『EOF』までの記述をSQL文として実行
# ここのSQL文は任意なものに置換える
# 以下の例では5つのカラムの全てにカウンターの値を挿入しています
${SQLPLUS} -s ${USERNAME}/${PASSWORD}<< EOF
set feedback off;
set echo off;
set flush off;
set head off;

insert into SampleTable
values (
'${COUNT}',
'${COUNT}',
'${COUNT}',
'${COUNT}',
'${COUNT}');

EOF

# カウンターを更新
@ START++

# ループエンド
end

# 一応、正常終了として0を戻す
exit 0

SQLPLUS変数のところを差し替えれば、Unix上でも動作するので早めにこの手のシェルを用意しておけば良かったです〜。(^^;