1
3

More than 5 years have passed since last update.

シェルスクリプトで、CSVファイルを読み込んでSqlPlusでクエリ(削除)を実行するサンプル

Last updated at Posted at 2016-07-12

概要

 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
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3