在工作中,如果基于oracle数据库的linux shell脚本的开发,校验txt数据文件入库的条数和txt本身的条数是否一致,可以使用如下方法实现,假设数据加载的log文件中会打印加载的条数,形如:100 rows successfully loaded.
如果没有打印,可以直接查询数据库。
#!/bin/bash
logName=/home/aaa.log
txtName=/home/aa.txt
lineNum=`cat -n ${logName} |grep successfully |awk '{print $1}'`
loadSum=$(sed -n ${lineNum}p $logName |awk '{print $1}')
txtSum=$(wc -l $txtName |awk '{print $1}')
msgDetail="条数不一致,数据文件条数为" `${txtSum}`
if [[ $loadSum == $txtSum ]];then
echo "数据文件条数和成功加载入库条数一致,为"$txtSum"条"
else
#往数据库写入日志,${DB_TNS} 为数据库连接串
sqlplus -S $username/$password@${DB_TNS} <<!
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
insert into test_log(id,txt_name,status,msgdetail) values(SHELL.NEXTVAL,'$txtName','F','$msgDetail');
exit
!
fi