我们平时都用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. VS2013使用EF6连接MySql

    前提:a.安装MySql的VS插件(版本请下载最新版) 我用的是:mysql-for-visualstudio-1.1.4 b.安装用于.net连接程序  mysql-connector-net-6. ...

  2. 【转载】Fast Inserts to PostgreSQL with JDBC and COPY FROM

    source: http://rostislav-matl.blogspot.com/2011/08/fast-inserts-to-postgresql-with-jdbc.html Thanks ...

  3. Cacti客户端SNMP的安装和配置

    安装 yum -y install net-snmp 配置 编辑/etc/snmp/snmpd.conf文件 找到下面这句: access  notConfigGroup ""   ...

  4. 关于网站高性能中磁盘cpu以及内存对网站性能的影响

    之前和同事聊天的时候,提到了这个硬件方面(包括内存,cpu,以及硬盘的存储选择),个人认为可以从这几个方面来提高底层硬件的性能,从而提高网站的整体吞吐量和速度. 一.主机: (1).CPU:决定处理的 ...

  5. SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高

    1.背景知识 在讲SVD++之前,我还是想先回到基于物品相似的协同过滤算法.这个算法基本思想是找出一个用户有过正反馈的物品的相似的物品来给其作为推荐.其公式为:

  6. LINQ to SQL快速上手 step by step

    Step1:建立数据库      在使用Linq to Sql前,我们要将相应的数据库建好.在这个Demo中,使用的数据库是SQL Server Express 2005.      我们首先建立一个 ...

  7. System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围

    GridView指定的参数已超出有效值的范围GridView在更新过程中异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围.参数名:v ...

  8. 删除svn文件的批处理文件

    @echo on color 2f mode con: cols=80 lines=25 @REM @echo 正在清理SVN文件,请稍候...... @rem 循环删除当前目录及子目录下所有的SVN ...

  9. nullcon HackIM2016 -- Programming Question 3

    Still Hungry and unsutisfied, you are looking for more. Some more, unique un heard dishes. Then you ...

  10. aps.net 图形验证码(转)

    参考文章: http://www.cnblogs.com/FayJack/articles/3063146.html 创建CreateCode.ashx文件: <%@ WebHandler La ...