天天看點

驗證檔案中記錄總行數是否與資料庫檔案同名表記錄總數是否一緻

 #!/bin/sh

# csv檔案目錄

cd /u01/app/oracle/oradata/ext

# 獲得擴充名為.csv的所有檔案清單

ls -l *.csv|awk '{print $9}'| while read line

do

  # 輸出擴充名為.csv的所有檔案名追加到檔案countstat.txt

  echo ${line} >> /root/countstat.txt

  # 輸出擴充名為.csv的每個檔案記錄行數追加到檔案countstat.txt

  cat ${line} | wc -l >> /root/countstat.txt

  # 擷取删除擴充名.csv後的資料庫中表名稱

  TABLE=`echo ${line}|awk -F "." '{print $1}'`

  # 輸出oracle表名稱追加到檔案countstat.txt

  echo $TABLE >> /root/countstat.txt

  # 查詢oracle資料庫中表記錄總數追加到檔案countstat.txt

  su - oracle -c "sqlplus /nolog <<EOF

  conn test/test

  select count(*) from $TABLE;

  exit;

  EOF

  ">> /root/countstat.txt

done

# 過濾檔案内容,删除不需要的行内容

sed '/^SQL/d' /root/countstatbak.txt |sed '/^$/d'|sed '/^Copyright/d'|sed '/^With/d'|sed '/^-/d'|sed '-e /COUNT/d'|sed 's/^[[:space:]]*//g'> /root/result.txt

:<<COMMENT 

/^SQL/d 删除所有SQL開頭的行

/^$/d 删除檔案中的所有空行

-e /COUNT/d 删除包含COUNT字元的所有行,無論比對字元在行首、行中或者行尾什麼地方

s/^[[:space:]]*//g 删除行首空格

COMMENT

本文轉自 pgmia 51CTO部落格,原文連結:http://blog.51cto.com/heyiyi/1170001