1. ホーム
  2. データベース
  3. デービーツー

シェルによるdb2データの抽出と更新

2022-01-08 01:17:05
私が見ているdb2チュートリアルは、「シェルでdb2データを抽出・更新する」です。db2データベースを扱うためのシェルプログラムで、シェルからdb2データを取り出して処理するものです。
  #SQLテキスト定義
SQL="SELECT AAA, BBB, CCC FROM MYTBL1"
# SQLを実行する
SDATA=`db2 "$SQL"`。
# 返り値の決定
If [ $? -ne 0 ]。
では
#db2 が返すエラーメッセージを表示する
echo "$SDATA"
1番出口
フィ
#取得したデータを加工する。
echo "$SDATA" | sed -e '4,/^$/!d;/^$/d' |。
読みながら AAA BBB CCC
する
echo "AAA IS $AAA, BBB IS $BBB, CCC IS $CCC"
完了
# 取得したデータの個数
echo "$SDATA" | sed -n -e '/^$/{1,3d;n;s/[^0-9]*([0-9]*)[^0-9]*/1/;p;}' | read CNT
echo "選択されたデータのカウントは$CNT."です。
exit 0★db2データを更新し、更新結果を取得する。
  SQL="UPDATE MYTBL1 SET AAA='2005',BBB='05',CCC='12'"
# SQLを実行する
SDATA=`db2 -a "$SQL"`。
#SQLCODEを取得する
echo "$SDATA" | sed -n -e 's/^. *sqlcode: \([-,0-9][0-9]*\). */1/p' | read SQLCODE
echo "Sqlcodeは$SQLCODE."です。
#SQLSTATEを取得する
echo "$SDATA" | sed -n -e 's/^. *sqlstate: \([-,0-9][0-9]*\). */1/p' | read SQLSTATE
echo "Sqlstateは$SQLSTATE."です。
# 更新された個数の取得(つまりsqlerrdの3番目の値)
echo "$SDATA" | sed -n -e '/sqlerrd/s/^. *(3) \([-,0-9][0-9]*\). */1/p' | read UPDCNT
echo "更新されたデータのカウントは$UPDCNT."です。
#sqlerrdの5番目の値を取得する
echo "$SDATA" | sed -n -e '/sqlerrd/{n;s/^. *(5) \([-,0-9][0-9]*\). *//1/;p;}' | read SQLERRD5
echo "Sqlerrd(5)は$SQLERRD5."です。