Linux 生产跑批脚本解读

1.查看定时任务

2.脚本-目录结构

1)config.ini

2)run.sh

3.命令解读

1)ls -1 路径文件夹       

含义:ls -1 /home/oracle/shell/config/    将文件夹config内的文件全部列出

[oracle@neptune config]$ ls -1 /home/oracle/shell/config/ >/home/oracle/shell/config/1.txt

2) sh x.sh       含义:调用脚本

sh $workPath/proc.sh $tbl_userid 'GET_TRUNCATE_ALL_TABLES' "$year-$month"

含义:调用过程,清空表

相关脚本内容: proc.sh

ls -1 $dataPath>$orgnoFile

把机构清单放入文件

3) for xx in ..   do  done   含义:循环执行 

for orgno in `cat $orgnoFile`
do
   sh $workPath/decrypt.sh $year $month $orgno
   sh $workPath/sqlldr.sh $year $month $orgno 
done

含义:循环机构清单中的行,按年月 机构 执行 decrypt.sh、sqlldr.sh

相关脚本:decrypt.sh、sqlldr.sh

4)decrypt.sh

filePath="$dataPath/$orgno/$year/$month/"
cd $filePath
unzip -o ${year}${month}.zip   

含义:在up_data文件夹的机构目录/年/月/解压(直接覆盖)

url=${decryptUrl}=$filePath

curl $url 

含义:调用http请求服务

decryptUrl=http://xxx:30050/fileCommon/fileDecAndZip?filePath 

for table in `cat $tablesFile`
do

   echo $table
  if [ ${table:0:1} = '#' ]; then
    continue
  fi 

  commCtrl=$workPath/$table.ctrl
  echo 'LOAD DATA'> $commCtrl
  echo 'CHARACTERSET UTF8'>> $commCtrl

  filePath="$dataPath/$orgno/$year/$month/$table.dat"
  fileAll="$dataPath/$orgno/$year/$month/$table.*"

 
  bakPath="$workPath/$orgno/$year/$month/"
  mkdir -p $bakPath

cnt=0
num=`sh $workPath/func.sh $tbl_userid 'pg_get_table_rownum.get_table_rownum' $table`
#echo 33$num
tableRow=${num#*.}

含义:调用tbl的过程,得到tbl表的行数

filePath 为:$dataPath/$orgno/$year/$month/$table.dat

if [ -e "$filePath" ]; then
    cnt=`cat $filePath | wc -l`        说明:.dat 中有多少行数据
    echo $cnt
    echo "INFILE \"$filePath\" ">>$commCtrl
    echo ${type}
    echo -e "append INTO TABLE $table \n Fields terminated by \"\" ">>$commCtrl
    echo 'trailing nullcols' >>$commCtrl

                  以上,将信息打印到commCtrl = shell下的.ctl文件中


    cat $tableColPath/$table.ctrl>>$commCtrl
    badFile="$workPath/$orgno/${table}_${year}${month}.bad"
    logFile="$workPath/$orgno/${table}_${year}${month}.log" 

说明:tableColPath=/home/oracle/shell/tables


    echo "sqlldr userid=$tbl_userid control=$commCtrl rows=50000 bindsize=104857600  parallel=true log=$workPath/$table.log errors=999999999"


     sqlldr userid=$tbl_userid control=$commCtrl rows=50000 bindsize=104857600  parallel=true bad=$badFile log=$logFile errors=999999999

     说明:sqlldr方式 加载入库tbl, rows 默认64行 每次提交的记录数

sqlldr user/password control=test.ctl skip=1 load=200000 errors=100 rows=1000 bindsize=33554432

user/password  //数据库的用户名密码
control        //sqlldr控制文件位置
skip=1         //表示跳过第一行,从第二行开始导入
load=200000    //表示并不导入所有的数据,只导入跳过skip参数后的200000条数据
rows=1000     //表示一次加载的行数,默认值为64,此处设置为1000
errors=100    //表示出错100次后,停止加载
bindsize=33554432 //表示每次提交记录缓冲区的大小,默认256k

bad文件:

log文件:

 5)脚本调用 oracle存储过程

        echo "sh $workPath/proc.sh "$tbl_userid" GET_SQLLDR_LOG "\'$year-$month\',\'$orgno\',\'$table\',$cnt""


        sh $workPath/proc.sh "$tbl_userid" GET_SQLLDR_LOG "'$year-$month','$orgno','$table',$cnt,$tableRow,'$logFile','$badFile'"

proc.sh :

get_sqlldr_log存储过程: 


 6)移动到备份位置

mv $fileAll $bakPath

 

  date
 fi

done

   

含义:从  /home/data/up_data/机构/$year/$month/$table.*     

          移动 到 /home/oracle/shell/机构/$year/$month/

tables.config:

$tablesFile:/home/oracle/shell/config/tables.config

func.sh

7) 存储过程查询表行数   pg_get_table_rownum

pg_get_table_rownum.get_table_rownum  表行数:

CREATE OR REPLACE PACKAGE BODY pg_get_table_rownum isfunction get_table_rownum(pTableName in varchar2) return varchar2 isvResult varchar2(1000);vSql    varchar2(1000);BEGINvSql := 'select count(1) from ' || pTableName;execute immediate vSqlinto vResult;return vResult;end;end pg_get_table_rownum;

8) 调用过程

run.sh 最后一句:

调过程跑批:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适合下班做的副业兼职、1天挣300,7天涨粉2万

最近小红书上有类视频火了! 周周近财:让网络小白少花冤枉钱,赚取第一桶金 利用AI制作的漫画解说历史小说视频。视频以《明朝那些事儿》为蓝本,一上线就疯狂吸粉,多条视频内容都大爆了。 就是这个账号,仅仅…

【华为】BFD与静态路由和RIP联用

【华为】BFD与静态路由和RIP联用 实验需求配置AR1AR2AR3AR4效果抓包查看 实验需求 如上图组网所示,在R1上配置到达R4的Loopback0。 4.4.4.4/32网段的浮动静态路由,正常情况下通过R3访问R4。 当R3故障时,自动选路通过R2访问R4的Loopback0;在R…

了解K8s集群kubectl命令进行陈述式资源管理

前言 在 Kubernetes 集群中,通过陈述式和声明式资源管理是确保应用程序高效运行的关键。认识这两种管理方法,能够更好地掌握 Kubernetes 集群的运维和管理。 目录 一、K8s 资源管理操作分类 1. 陈述式 2. 声明式 3. K8s 集群管理常用命令概览 二…

基于瑞萨RA6M5的自控衣橱

1. 主控转接板原理图和PCB设计 2. 屏幕界面设计 3. 程序设计 4. QT设计 QT设计,读取MQTT数据,在QT上显示衣橱内部的温度,湿度情况,且能够控制衣橱的开关门,开关灯等。 5. 实物演示 瑞萨

数据库缓存 buffer pool详解

什么是buffer pool buffer pool, 又称之缓存池, 是mysql中为了提升查询性能而引入的缓存, 如果每次查询和修改都去操作磁盘的话, 性能就会很差, 从而引入 Buffer Pool包含多个缓冲页(默认大小通常为16KB),每个缓冲页都有对应的控制信息&#…

Python 机器学习 基础 之 模型评估与改进 【评估指标与评分】的简单说明

Python 机器学习 基础 之 模型评估与改进 【评估指标与评分】的简单说明 目录 Python 机器学习 基础 之 模型评估与改进 【评估指标与评分】的简单说明 一、简单介绍 二、评估指标与评分 1、牢记最终目标 2、二分类指标 1)错误类型 2)不平衡数据集…

【产品运营】对接上游电商平台需要了解什么?

围绕卖家和平台的运营模式等维度,ISV对接平台可以划分为业务域、开放能力域和产品能力域。 ISV对接平台的最终目地是打通多方数据传输,解决卖家日常运营中的场景起到类似于业务中台的作用。因此我们可以围绕卖家和平台的运营模式等维度划分为&#xff1a…

【全开源】民宿酒店预订管理系统(ThinkPHP+uniapp+uView)

民宿酒店预订管理系统 特色功能: 客户管理:该功能可以帮助民宿管理者更加有效地管理客户信息,包括客户的姓名、电话、地址、身份证号码等,并可以在客户的订单中了解客户的消费情况,从而更好地满足客户的需求&#xff…

【JavaEE初阶】HTTP协议|HTTP请求方法|GET|POST|GET和POST的区别|问题辨析

目录 认识"⽅法"(method) 1.GET⽅法 GET请求的特点 2.POST⽅法 POST请求的特点 💡经典⾯试题:谈谈GET和POST的区别 💡问题辨析: 3.其他⽅法 💡推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂…

六一儿童节创意项目:教你用HTML5和CSS3制作可爱的雪糕动画

六一儿童节快到了,这是一个充满童趣和欢乐的日子。为了给孩子们增添一份节日惊喜,我们决定用HTML5和CSS3制作一个生动有趣的雪糕动画。通过这个项目,不仅能提升你的前端技能,还能带给孩子们一份特别的节日礼物。无论你是前端开发新…

第一个Flutter3项目

配置flutter国内源 首先,配置flutter的国内源: env:PUB_HOSTED_URL"https://pub.flutter-io.cn"; env:FLUTTER_STORAGE_BASE_URL"https://storage.flutter-io.cn"配置gradle国内源 修改gradle\wrapper\gradle-wrapper.properties…

组件的传参等

一:组件的生命周期函数 组件的生命周期函数: created只是创建了组件内的实例对象 attached,给组件实例绑定了属性,绑定到页面节点树之后 ready准备好渲染之后,还未渲染之前 moved组件实例被移动到另一个位置后执行 detached在整个组件被被移除执行 error执行的时候,组件内…

yolo 算法 易主

标题:YOLOv10: Real-Time End-to-End Object Detection 论文:https://arxiv.org/pdf/2405.14458ethttps%3A//arxiv.org/pdf/2405.14458.zhihu.com/?targethttps%3A//arxiv.org/pdf/2405.14458 源码:https://github.com/THU-MIG/yolov10 分析…

N进制计数器【02】

大容量N进制计数器 集成计数器容量的扩展 集成计数器级联扩展容量 【例1】由两片 74LS161 级联组成 256 进制(8位二进制)同步加法计数器 【解】级联时,外加时钟信号同时接到各片计数器的时钟输入端,用前级计数器的进位输出 C…

Transformer模型架构笔记

0. 简介 Transformer是一种用于自然语言处理(NLP)和其他序列到序列(sequence-to-sequence)任务的深度学习模型架构,它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制(self-attention …

JUC笔记

1、什么是 JUC JUC就是 java.util 下的工具包、包、分类等。 普通的线程代码: ThreadRunnable 没有返回值、效率相比入 Callable 相对较低!Callable 有返回值! 2、线程和进程 线程、进程,如果不能使用一句话说出来的技术&#x…

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…

Objective-C爬虫:实现动态网页内容的抓取

在当今的互联网时代,数据的获取和分析变得日益重要。无论是进行市场研究、用户行为分析还是产品开发,获取大量数据都是不可或缺的一环。然而,很多有价值的信息都隐藏在动态加载的网页中,这些网页通过JavaScript动态生成内容&#…

本特利330180-51-00前置器在工业自动化中的应用与优势

本特利330180-51-00前置器在工业自动化中的应用与优势 作为PLC技术员,在工业自动化领域中,我们经常接触到各种传感器和前置器。其中,本特利330180-51-00前置器以其卓越的性能和广泛的应用领域,受到了业界的广泛关注。本文将详细介…

sqli-labs---第三关

1、判断什么类型注入 ?id1 正常显示 ?id1 (报错:1) LIMIT 0,1) ?id1 正常显示 ?id1#(报错:1) LIMIT 0,1) 可知闭合方式为) 2、查看列数 ?id1) order by 3 -- (没有报错) ?id1) order by 4 -- (报错) 说明有3列 3、使用联合查…