我们平时都用sqlldr进行将文本数据加载到数据库,但是有时候由于数据问题导致入库率不能达到100%,因此我们要检测是否存在不能入库的数据记录。以下shell脚本就是统计文本中记录数和数据库中记录数是否一致。此脚本仅供大家参考,仍需要完善,各位请多多指教。

#!/bin/sh

#定义参数
data_path="/home/oracle/txtdata"
conf_file="/home/oracle/config"
log_file="/home/oracle/log"
date=`date +"%Y%m%d"`
#统计此次导入的文件中个文件的行数
file_cout=0 #切换到data_path路径下
cd ${data_path}
#检查是否有txt文件
file_cout=`ls -A *.txt |wc -l`
#清空txtdata.conf文件
echo ''>${conf_file}/txtdata.conf
#判断当期是否有要进行sqlldr文件
if [ ${file_cout} -eq 0 ]; then
echo "此次没有要进行sqlldr的文本!清检查FTP是否执行!"
else
#统计各文本行数并放到配置文件中
for var in `ls -A *.txt|awk '{print $NF}'|sort -u`;
do
wc -l $var >>${conf_file}/tempfile.conf
done
fi
#切换到配置文件路径下
cd ${conf_file}
#将.txt替换掉
sed 's/.txt/|/g' tempfile.conf|uniq > txtdata.conf
#删除空行
#sed '/^$/d' txtdata.conf
#用|替换空格
sed 's/[[:space:]]/|/g' txtdata.conf |uniq >tempfile2.conf
#登录数据库
sqlplus -s oradev/oracle <<EOF
set echo off;
set feedback off;
set verify off;
set term off;
set trimspool on;
set heading off;
set newpage none;
spool '/home/oracle/config/dbdata.conf'
select count(1) as num,'|','user_tables' from user_tables;
spool off;
exit;
EOF #拼接文件
paste tempfile2.conf dbdata.conf > sumfile.conf
#比较数据条数
awk -F'|' '
{if($2==$4 && $1==$3)
{
print $2":数据行数匹配,可以进行下一步操作"
}
else
{
print $2":数据行数不匹配,请检查sqlldr日志!"
}
}' sumfile.conf >>${log_file}/check${date}.log
#删除临时文件
rm tempfile.conf
rm tempfile2.conf
#退出
exit 0

SQLLDR记录数与文本记录数比较的更多相关文章

  1. 转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

    http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常 ...

  2. css3实现超出文本指定行数(指定文本长度)用省略号代替

    测试代码: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...

  3. Asp.net 定时写入文本记录

    Asp.net 定时写入文本记录 public static string FileAddress = "c:\\TimerLog.txt"; protected void Pag ...

  4. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录

    相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3MpK1nOQXI-JbS-AP5MvREzSnnedU7F9_G8l_Kvbkt_O2gKqFw ...

  5. DNS记录类型介绍(A记录、MX记录、NS记录等)

    DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 建站名词解释:DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 泛域名 泛解析 域 ...

  6. 【转】DNS记录类型介绍(A记录、MX记录、NS记录等)

    DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 建站名词解释:DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 泛域名 泛解析 域 ...

  7. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录(转)

    http://www.cnblogs.com/LittleHann/p/3828927.html 相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3 ...

  8. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题

    首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 你的服务器IP! 然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为 ...

  9. 第五节:从一条记录说起——InnoDB记录结构

    <MySQL 是怎样运行的:从根儿上理解 MySQL>第五节:从一条记录说起——InnoDB记录结构 准备工作 现在只知道客户端发送请求并等待服务器返回结果.    MySQL什么方式来访 ...

随机推荐

  1. Easyui修改样式

    背景:公司一个后台管理系统做的网站,构架采用Asp.net MVC4.0 + EasyUI, 请了美工做了切图,结果发现美工不懂Easyui,切图的风格又都是直角风格. 而Easyui默认风格是圆角. ...

  2. jquery的.submit

    $("form").submit(function(e){ alert("Submitted"); });

  3. java的InputStream和OutputStream的理解【转】

    1.在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2.任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产生 ...

  4. webForm练习1(地区导航)

    使用LINQ TO SQL类连接数据库. create database mydb go use mydb go CREATE TABLE [dbo].[ChinaStates] ( ) COLLAT ...

  5. 树莓派USB摄像头与camera模块对比

    http://www.cnblogs.com/weixinforspurs/p/5575962.html ——————————————————————————————————————————————— ...

  6. 用BlendFunc实现舞台灯光和刮刮卡效果

    [转]http://code.lovemiao.com/?p=136#more-136 之前写过一篇<不规则形状按钮的点击判定>,利用了CCRenderTexture创建一块画布,可以在上 ...

  7. newCachedThreadPool线程池

    public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们.对于执行很多短期异步任 ...

  8. 8.12 CSS知识点5

    背景原点 background-origin 设置元素背景图片的原始起始位置,必须保证背景是background-repeat为no-repeat此属性才会生效. 语法: background-ori ...

  9. 创建maven项目时,提示 overlaps the workspace location

    创建maven项目时提示: Invalid project description.OKF:\java\mywork overlaps the workspace location: F:\java\ ...

  10. [转]libsvm 训练后的模型参数讲解

    http://blog.sina.com.cn/s/blog_6646924501018fqc.html 主要就是讲解利用libsvm-mat工具箱建立分类(回归模型)后,得到的模型model里面参数 ...