Linux 生产跑批脚本解读

news2024/10/6 4:08:03

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 最后一句:

调过程跑批:

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

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

相关文章

家政服务,让您的家更温馨

家,是我们生活的港湾,也是我们心灵的归宿。在这个快节奏的时代,每个人都在为了生活而奔波。然而,家务琐事却常常成为我们忙碌生活中的绊脚石。为了解决这个问题,家政行业应运而生,为您的生活带来便利与舒适…

【linux】g++/gcc编译器

目录 背景知识 gcc如何完成 预处理(进行宏替换) 编译(生成汇编) 汇编(生成机器可识别代码) 链接(生成可执行文件或库文件) 在这里涉及到一个重要的概念:函数库 函数库一般分为静态库和动态库两…

使用FP8加速PyTorch训练的两种方法总结

在PyTorch中,FP8(8-bit 浮点数)是一个较新的数据类型,用于实现高效的神经网络训练和推理。它主要被设计来降低模型运行时的内存占用,并加快计算速度,同时尽量保持训练和推理的准确性。虽然PyTorch官方在标准…

【电路笔记】-二阶滤波器

二阶滤波器 二阶(或双极)滤波器由两个连接在一起的 RC 滤波器部分组成,可提供 -40dB/十倍频程滚降率。 1、概述 二阶滤波器也称为 VCVS 滤波器,因为运算放大器用作压控电压源放大器,是有源滤波器设计的另一种重要类型,因为与我们之前研究过的有源一阶 RC 滤波器一起,…

Git 的安装和使用

一、Git 的下载和安装 目录 一、Git 的下载和安装 1. git 的下载 2. 安装 二、Git 的基本使用-操作本地仓库 1 初始化仓库 1)创建一个空目录 2)git init 2 把文件添加到版本库 1)创建文件 2)git add . 3)g…

迅睿 CMS 中开启【ionCube 扩展】的方法

有时候我们想要某种功能时会到迅睿 CMS 插件市场中找现有的插件,但会有些担心插件是否适合自己的需求。于是迅睿 CMS 考虑到这一层推出了【申请试用】,可以让用户申请试用 30 天,不过试用是有条件的,条件如下: php 版…

MyBatis复习笔记

3.Mybatis复习 3.1 xml配置 properties&#xff1a;加载配置文件 settings&#xff1a;设置驼峰映射 <settings><setting name"mapUnderscoreToCamelCase" value"true"/> </settings>typeAliases&#xff1a;类型别名设置 #这样在映射…

28. 正定矩阵和最小值

文章目录 1. 概述2. 正定矩阵判定条件3. 举例 1. 概述 正定矩阵这节可以将主元&#xff0c;行列式&#xff0c;特征值&#xff0c;还有不稳定性结合起来。以前我们学的是解决方程 A x b Axb Axb 的问题&#xff0c;现在升级&#xff0c;变成 x T A x b x^TAxb xTAxb &…

html 字体设置 (web端字体设置)

windows自带的字体是有版权的&#xff0c;包括微软雅黑&#xff08;方正&#xff09;、宋体&#xff08;中易&#xff09;、黑体&#xff08;中易&#xff09;等 版权算是个大坑&#xff0c;所谓为了避免版权问题&#xff0c;全部使用开源字体即可 我这里选择的是思源宋体&…

Java进阶学习笔记10——子类构造器

子类构造器的特点&#xff1a; 子类的全部构造器&#xff0c;都会先调用父类的构造器&#xff0c;再执行自己。 子类会继承父类的数据&#xff0c;可能还会使用父类的数据。所以&#xff0c;子类初始化之前&#xff0c;一定先要完成父类数据的初始化&#xff0c;原因在于&…

【pyspark速成专家】7_SparkSQL编程1

目录 一&#xff0c;RDD&#xff0c;DataFrame和DataSet对比 二&#xff0c;创建DataFrame 本节将介绍SparkSQL编程基本概念和基本用法。 不同于RDD编程的命令式编程范式&#xff0c;SparkSQL编程是一种声明式编程范式&#xff0c;我们可以通过SQL语句或者调用DataFrame的相…

2024Spring> HNU-计算机系统-实验4-Buflab-导引+验收

前言 称不上导引了&#xff0c;因为验收已经结束了。主要是最近比较忙&#xff0c;在准备期末考试。周五晚上才开始看实验&#xff0c;自己跟着做了一遍实验&#xff0c;感觉难度还是比bomblab要低的&#xff0c;但是如果用心做的话对于栈帧的理解确实能上几个档次。 实验参考…

ClickHouse 24.4 版本发布说明

本文字数&#xff1a;13148&#xff1b;估计阅读时间&#xff1a;33 分钟 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 新的一个月意味着新版本的发布&#xff01; 发布概要 本次ClickHouse 24.4版本包含了13个新功能&#x1f381;…

List Control控件绑定变量

创建基于对话框的mfc项目 添加 List Control控件 右击控件&#xff0c;选择“添加变量” 在初始化对话框代码中增加一些代码 BOOL CMFCApplication3Dlg::OnInitDialog() { //...// TODO: 在此添加额外的初始化代码DWORD dwStyle m_programLangList.GetExtendedStyle(); …

程序员的那些经典段子

哈喽&#xff0c;大家好&#xff0c;我是明智&#xff5e; 本周咱们已经解决了在面试中经常碰到的OOM问题&#xff1a; 《美团一面&#xff0c;发生OOM了&#xff0c;程序还能继续运行吗&#xff1f;》 《美团一面&#xff1a;碰到过OOM吗&#xff1f;你是怎么处理的&#xff1…

【Linux】Linux的基本指令_1

文章目录 二、基本指令1. whoami 和 who2. pwd3. ls4. clear5. mkdir 和 cd6. touch7. rmdir 和 rm 未完待续 二、基本指令 直接在命令行的末尾&#xff08;# 后面&#xff09;输入指令即可。在学习Linux指令的过程中&#xff0c;还会穿插一些关于Linux的知识点。 1. whoami …

AI助力垃圾分类开启智慧环保新时代,基于卷积神经网络模型开发实践垃圾分类识别系统

在快节奏的现代生活中&#xff0c;垃圾分类已经成为一项重要的环保举措。然而&#xff0c;面对日益复杂的垃圾种类和繁多的分类标准&#xff0c;许多人感到困惑和无奈。幸运的是&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI深度学习模型为垃圾分类带来了革命性的变化…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 详解

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

嵌入式全栈开发学习笔记---C语言笔试复习大全21(编程题25~30)

目录 25、实现字符串的排序。&#xff08;输入hello world good&#xff0c;输出good hello world&#xff0c;其中字符串个数任意&#xff09; 26、输入两个有序的字符串&#xff08;从小到大&#xff09;&#xff0c;合并成一个有序的字符串。&#xff08;输入cdhxyz fjln …

利用EAS自动生成数据模型和sql脚本

EAS适用于敏捷开发中小系统,这节主要讲解EAS对应的模型和数据库脚本输出应用。 在这个应用程序中,用户可自定义实体模型和枚举模型,只要选择相应的实体或者枚举进行右击添加即可。 解决方案参数设定,在解决方案的设定中可设置项目名称、通用语言,命名空间和输出位置。 连…