概要
CSVファイルを読み込み、sqlPlusを使いDELETEのクエリを流すシェルスクリプトのサンプルとなります。途中でSQLエラー(OSレベルのエラーも含め)なった場合は、すべてロールバックします。
※筆者の備忘録用としてのメモ書きでもあります。
シェルスクリプトのサンプル
example-delete.sh
#!/bin/sh
# @(#) このスクリプトは、CSVファイルを読み込み、sqlPlusを使いクエリを実行します。
# ★★★ パラメータチェックの仕様変更はここで
checkParam()
{
param="$1"
if [ ${#param} -eq 10 ]; then
return 0
else
return 1
fi
}
sql=""
# ★★★ CSVファイル(list.csv)の1行の内容は、3列のカンマ区切りを想定しています。
while read line; do
id=`echo ${line} | cut -d , -f 1`
param1=`echo ${line} | cut -d , -f 2`
checkParam ${param1}
param2=`echo ${line} | cut -d , -f 3`
checkParam ${param2}
# ★★★ クエリの仕様変更はここで
sql="${sql}DELETE FROM TB_HOGE1 WHERE ID=${id}\n;"
done < list.csv
(
echo "WHENEVER SQLERROR EXIT 1 ROLLBACK;"
echo "WHENEVER OSERROR EXIT 1 ROLLBACK;"
echo "VARIABLE code NUMBER;"
echo "BEGIN"
echo ":code:=0;"
echo -e "${sql}"
echo "COMMIT;"
echo "END;"
echo "/"
echo "EXIT:code"
) | sqlplus /nolog
echo "$?"
補足
コマンド使用例 | シェルスクリプトでの処理内容 | 参考URL |
---|---|---|
WHENEVER SQLERROR EXIT 1 ROLLBACK | SQLでエラーとなる場合はROLLBACKし「:code」に1が設定され、sqlplusコマンドの戻り値になる | WHENEVER SQLERROR |
WHENEVER OSERROR EXIT 1 ROLLBACK | OSレベルでエラーとなる場合はROLLBACKし「:code」に1が設定され、sqlplusコマンドの戻り値になる | WHENEVER OSERROR |