我们平时都用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. Ms sql 2000互转2005

    BCP导入导出数据.非常的方便.速度很快.--还原部分,指定强制还原(使用WITH MOVE指定文件还原,RELPACE由于版本不一样,所以要指定REPLACE,如果不指定REPLACE参数,会提示版 ...

  2. ant安装(linux)

    1.下载 下载地址:http://ant.apache.org/bindownload.cgi 下载apache-ant-1.9.7-bin.tar.gz(当前最新版本),将该下载包拷贝到/data/ ...

  3. NHibernate系列文章十二:Load/Get方法

    摘要 NHibernate提供两个方法按主键值查找对象:Load/Get. 1. Load/Get方法的区别 Load: Load方法可以对查询进行优化. Load方法实际得到一proxy对象,并不立 ...

  4. 创建Android项目时出错——No resource found that matches the given name 'Theme.AppCompat.Light'

    创建Android项目时出错,error: Error retrieving parent for item: No resource found that matches the given nam ...

  5. avalon2学习教程12数据验证

    avalon2砍掉了不少功能(如ms-include,ms-data),腾出空间加了其他更有用的功能.数据验证就是其中之一.现在avalon2内置的验证指令是参考之前的oniui验证框架与jquery ...

  6. file access , argc, argv[ ]

    _____main函数含有 两个参数 ,argc ,argv[] 这两个参数用以指示命令行输入的参数信息. argc 的值是输入的参数的数量.argv是一个数组,每个数组元素指向一个string字符串 ...

  7. 添加和删除hadoop集群中的节点

    参见 http://www.cnblogs.com/tommyli/p/3418273.html

  8. firefox广告拦截插件

    firefox广告拦截插件: Adblock Plus  Adblock Edge Adblock Plus Pop-up Addon 如果不能更新,则需要修改HOST: 117.18.232.191 ...

  9. Android-Service生命周期

    Service的基本概念,以及Service的生命周期: 一.Service的基本概念: 一个Service就是应用程序的组件,可以在后台长期跑,或者是为其他的应用提供功能上的支持.Service一般 ...

  10. 接收 ajax POST 方式传入的参数

    ----前台--- var list = new Array(); var params = { gencodeid : "test001", value : "01&q ...