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 is
  function get_table_rownum(pTableName in varchar2) return varchar2 is
    vResult varchar2(1000);
    vSql    varchar2(1000);
  
  BEGIN
  
    vSql := 'select count(1) from ' || pTableName;
    execute immediate vSql
      into vResult;
  
    return vResult;
  end;

end pg_get_table_rownum;

8) 调用过程

run.sh 最后一句:

调过程跑批:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ROS机器人学习】--------1ROS工作空间和功能包创建

虚拟机工具和镜像链接: https://pan.baidu.com/s/1HDmpbMESiUA2nj3qFVyFcw?pwd8686 提取码: 8686 ROS工作空间是一个用于组织和管理ROS(机器人操作系统)包的目录结构,它通常包含多个子目录,用于存放源码、构建文件和安装文件。工…

Elastic Cloud 将 Elasticsearch 向量数据库优化配置文件添加到 Microsoft Azure

作者:来自 Elastic Serena Chou, Jeff Vestal, Yuvraj Gupta 今天,我们很高兴地宣布,我们的 Elastic Cloud Vector Search 优化硬件配置文件现已可供 Elastic Cloud on Microsoft Azure 用户使用。 此硬件配置文件针对使用 Elasticsearch 作…

CSS单位px、rem、em、vw、vh的区别

目录 前言 零.视口介绍 一.px 二.em 三.rem【重要】 3.1rem介绍 3.2rem与em的区别 四.vw、vh、vmax、vmin 五.注意问题 5.1如何使1rem 10px? 5.2如果父元素没有指定高度,那么子元素的百分比高度是多少? 5.3更多问题 前言 这几…

实现多级树形结构查询 比如分类(父分类、子分类)

实现多级树形结构查询 比如分类(父分类、子分类) 数据库表结构 CREATE TABLE course_category (id varchar(20) NOT NULL COMMENT 主键,name varchar(32) NOT NULL COMMENT 分类名称,label varchar(32) DEFAULT NULL COMMENT 分类标签默认和名称一样,p…

CLIP 论文的关键内容

CLIP 论文整体架构 该论文总共有 48 页,除去最后的补充材料十页去掉,正文也还有三十多页,其中大部分篇幅都留给了实验和响应的一些分析。 从头开始的话,第一页就是摘要,接下来一页多是引言,接下来的两页就…

qt-C++笔记之QThread使用

qt-C笔记之QThread使用 ——2024-05-26 下午 code review! 参考博文: qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面 qt-C笔记之QThread使用 文章目录 qt-C笔记之QThread使用一:Qt中几种多线程方法1.1. 使用 QThread 和 Lambda…

gnocchi学习小结

背景 总结gnocchi 4.4版本gnocchi-metricd工作流程 入口 gnocchi.cli.metricd metricd stop after processing metric默认为0,调servicemanager run MetricdServiceManager __init__ 服务逻辑封装到MetricdServiceManager初始化中 主要由MetricProcessor, Met…

火山引擎“奇袭”阿里云

图片|电影《美国队长3》剧照 ©自象限原创 作者丨程心 编辑丨罗辑 大模型价格战,已经不是什么新闻。 从OpenAI发布GPT-4o,将API价格下调50%,并宣布面向普通用户免费开始,就标志着大模型的竞争从性能进入到了成本…

Java设计模式 _行为型模式_迭代器模式

一、迭代器模式 1、迭代器模式 迭代器模式(Iterator Pattern)是一种行为型设计模式,用于顺序访问集合对象的元素,不需要关心集合对象的底层表示。如:java中的Iterator接口就是这个工作原理。 2、实现思路 &#xff0…

面试大杂烩之kafka

面试这个领域最近环境不行,所以卷起来流量挺大 搭建: 总体来说 比较简单,主要是配置文件,命令的话分开了producer /consumer/ topic 大概这么个意思。具体可以看里面的博客 #host配置 #安装包 wget https://archive.apache.or…

国内最受欢迎的7大API供应平台对比和介绍||电商API数据采集接口简要说明

本文将介绍7款API供应平台:聚合数据、百度APIStore、Apix、数说聚合、通联数据、HaoService、datasift 。排名不分先后! 免费实用的API接口 第一部分 1、聚合数据(API数据接口_开发者数据定制) 2、百度API Store(API集市_APIStore…

C++第十九弹---string模拟实现(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、修改操作 2、迭代器操作 3、字符串操作 4、非成员函数重载操作 总结 1、修改操作 1、string& operator (const char* s); //尾部插入…

骑行 - 新区永旺出发的环太湖路线

环过好几次太湖,但对路线都没太在意,都是跟着别人走的。这次自己制定一个路书,方便下次自己一个人环太湖时使用。 开始是使用高德地图做路书,只能在PC上做。我用的是网页版,每次选点太麻烦了。要输入地址搜索&#xff…

【C语言】八进制、十六进制

前言 在我们日常生活中使用的数往往是十进制的,而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制(尤其是2的幂相关的进制,因为这种计数系统比十进制更接近于计算机的二进制系统)&#xff0…

5.26机器人基础-空间描述和变换2

在前文的基础上引入平移算子和旋转算子 1.平移算子 2.旋转算子 3.变换算子

推荐一款媒体影音嗅探神器—Chrome扩展插件(猫抓cat-catch)

目录 1.1、前言1.2、下载地址1.3、github Releases 版本说明1.4、安装步骤1.5、猫抓插件常规设置1.5.1、设置抓取文件的类型1.5.2、设置抓取文件的后缀名 1.1、前言 我们在日常上网的过程中,很多音频、视频网站下载资源都非常不方便,要么需要安装客户端&…

联邦学习(一)

世界第一本“联邦学习”专著——《联邦学习》。作者阅读数书籍《联邦学习实战》。 1.联邦学习概述 在构件全局模型时,其效果与数据被整合在一起进行集中式训练的效果几乎一致,这便是联邦学习提出的动机和核心思想。 核心理念:数据不动模型动,数据可用不可见。 传统训练范式…

初步认识栈和队列

Hello,everyone,今天小编讲解栈和队列的知识!!! 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&…

hsql学习笔记

1. row_number() over (partition by uid order by dt 分析: row_number(): 这是一个窗口函数,用于为结果集中的每一行分配一个唯一的序号。默认情况下,这个序号是按照查询结果的顺序来分配的,但你可以通过OVER()子句…

Mybatis源码剖析---第二讲

Mybatis源码剖析—第二讲 那我们在讲完了mappedstatement这个类,它的一个核心作用之后呢?那下面我有一个问题想问问各位。作为mappedstatement来讲,它封装的是一个select标签或者insert标签。但是呢,我们需要大家注意的是什么&am…