2007年6月21日木曜日

BashでDDLを一括実行

最近なんでもやらされて勉強になります。ハイ。
DDLのファイル名が書かれたリストを、スクリプトで
一行ずつ読み込んでsqlplusで実行。
DDLは事前に用意する。



#check parameter
if [ $# -eq 0 ]
then
echo "parameter error!"
exit 1
fi
#check file
if [ ! -f "$1" ]
then
echo "$1 is not existed"
exit 1
fi

DATE=`date '+%y%m%d%H%M%S'`
LOG=log${DATE}.log

for fname in `cat $1`
do
echo "processing...${fname}"
sqlplus <<EOF
tigger/scott
spool ${LOG}
@${fname}
spool off
EOF

#check oracle error

grep "ORA-" ${LOG}
if [ $? -eq 0 ]
then
echo "oracle error!"
exit 1
fi

echo "completed"
done


オラクルエラーのチェックのとろこが
あまりしっくりしません
なんかエレガントな方法ないかなぁ・・・。

0 件のコメント: