首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 綜合知識

使用 Shell 腳本擷取與更新 DB2 資料:實用範例與技巧

     編輯:DB2 綜合知識

Shell 操作 DB2 資料庫實戰

本文提供實用的 Shell 腳本範例,示範如何擷取 DB2 資料並處理、更新資料並取得執行結果。

擷取資料並處理

# SQL 定義
SQL="SELECT AAA, BBB, CCC FROM MYTBL1"

# 執行 SQL
SDATA=`db2 "$SQL"`

# 回傳值判斷
if [ $? -ne 0 ]; then
  echo "$SDATA"   # 顯示 DB2 錯誤訊息
  exit 1
fi

# 處理取得的資料(跳過前 3 行標題與空行)
echo "$SDATA" | sed -e '4,/^$/!d;/^$/d' |
while read AAA BBB CCC; do
  echo "AAA IS $AAA, BBB IS $BBB, CCC IS $CCC"
done

# 取得資料筆數
echo "$SDATA" | sed -n -e '/^$/{1,3d;n;s/[^0-9]*\([0-9]*\)[^0-9]*/\1/;p;}' | read CNT
echo "The count of selected data is $CNT."
exit 0

更新資料並取得結果代碼

# 更新語句
SQL="UPDATE MYTBL1 SET AAA='2005',BBB='05',CCC='12'"

# 執行 SQL(-a 顯示 SQLCA)
SDATA=`db2 -a "$SQL"`

# 取得 SQLCODE
echo "$SDATA" | sed -n -e 's/^.*sqlcode: \([-,0-9][0-9]*\).*/\1/p' | read SQLCODE
echo "Sqlcode is $SQLCODE."

# 取得 SQLSTATE
echo "$SDATA" | sed -n -e 's/^.*sqlstate: \([-,0-9][0-9]*\).*/\1/p' | read SQLSTATE
echo "Sqlstate is $SQLSTATE."

# 取得更新筆數 (sqlerrd 第 3 個值)
echo "$SDATA" | sed -n -e '/sqlerrd/s/^.*(3) \([-,0-9][0-9]*\).*/\1/p' | read UPDCNT
echo "Updated data's count is $UPDCNT."

# 取得 sqlerrd 第 5 個值
echo "$SDATA" | sed -n -e '/sqlerrd/{n;s/^.*(5) \([-,0-9][0-9]*\).*/\1/;p;}' | read SQLERRD5
echo "Sqlerrd(5) is $SQLERRD5."

關鍵技巧總結

  • 使用 db2 -a 顯示完整 SQLCA 以解析錯誤代碼與影響筆數
  • 善用 sed 正則表達式從輸出擷取關鍵指標
  • 透過 $? 判斷指令執行成敗
  • 資料處理管線結合 while read 逐行處理

這些腳本模式可直接應用於自動化備份、ETL 處理、批次更新等生產環境場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved