IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Oracle通过spool命令导出.dat数据,及通过Shell脚本定时任务执行卸数 -> 正文阅读

[大数据]Oracle通过spool命令导出.dat数据,及通过Shell脚本定时任务执行卸数

这篇文章看起来有点简陋小白,但是如果你也遇到了这样的问题需求,仔细把它看完,对你一定有所帮助。
首次写shell脚本,语法很菜,希望大家指点跟进
我在这不多废话,开始

spool脚本

首先spool脚本常用命令:

spool C:\Users\AnYi\Desktop\ODS\a.dat--文件生成位置
set colsep '@|@'--输出分隔符(建议在sql中分隔:||'@|@'||如下:)
set echo off--显示命令
set feedback on--处理的记录条数
set pagesize 0--输出每页行数,缺省为24,为了避免分页,设定为0
set termout on--显示脚本中的命令的执行结果(控制台打印)
set trimspool on--除每行后面空格
set linesize 200--设置行宽,默认100
select NAME||'@|@'||CREATE_TIME||'@|@'||BUS_TYPE||'@|@'||STATUS||'@|@' from TableName;
spool off--结束
exit--退出

例:这是我的卸数spool脚本

准备:spoolBJ.sql

set echo off
set feedback off
set pagesize 0
set trimspool off
set termout off
set linesize 200
spool /home/odstest/2022/JRBJ_BS_INTEGRATION.dat--卸数地址,关联下面截图查看
SELECT NAME||'@|@'||STATUS||'@|@'||UNION_CODE||'@|@'||TO_CHAR(CREATE_TIME,'YYYY-MM-DD HH24:MI:SS')||'@|@' from JRBJ_BS_INTEGRATION;
spool off

我首次测试是这样子的:
在这里插入图片描述
执行

./test.sh spoolBJ.sql

在这里插入图片描述

导出成功,再通过shell实现更多要求

shell脚本:

准备:

#!/bin/bash

#spoolSql路径
SPSQL_PATH="/home/odstest"
#-- .dat/.ctl/.gz 文件生成存放路径
File_Path="/home/odstest/2022/"
#  .ctl / .gz 备份地址
bak_PATH="/home/odstest/odsbak"

BUS="JRBJ_BUS.dat"
INTEGRATION="JRBJ_BS_INTEGRATION.dat"
DEPT="JRBJ_DEPT.dat"


#备份
A=$(pwd)
cd $File_Path
for var in *.gz;do mv "$var" "$(date '+%Y%m%d')$var";done
for var in *.ctl;do mv "$var" "$(date '+%Y%m%d')$var";done
mv $(date '+%Y%m%d')* $bak_PATH
cd $A

#-----------------------------------------------开始导数,生成.dat文件
#卸数
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=/data/app/oracle/product/11.2.0.4/db_1
export ORACLE_SID=test
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#以上代码为Oracle的系统环境变量设置,必须添加,否则crontab定时任务计划不能执行。
sqlplus nane/pwd@11.11.111.123:1521/test <<EOF
@$SPSQL_PATH/spoolDept.sql
@$SPSQL_PATH/spoolBJ.sql
@$SPSQL_PATH/spoolBus.sql

exit
EOF
#-----------------------------------------------导出.dat格式数据完成

#-- .dat/.ctl 文件存放路径
#File_Path="/home/odstest/2022/"

#-----------------------------打包文件
cd $File_Path
gzip -c $BUS > $BUS.gz
gzip -c $INTEGRATION > $INTEGRATION.gz
gzip -c $DEPT > $DEPT.gz

#-----------------------------以下是创建.dat对应的.ctl控制文件

DEPTctl="JRBJ_DEPT.ctl"
BUSctl="JRBJ_BUS.ctl"
INTEGRATIONctl="JRBJ_BS_INTEGRATION.ctl"



#-----部门控制文件检查
if [ -f "$DEPTctl" ]; then
  echo "$DEPTctl存在"
else
  touch $DEPTctl
  cat > $DEPTctl <<EO
DEPT_NAME@|@DEPT_CODE@|@DEPT_FULL_NAME@|@DEPT_UNI_CODE@|@DEPT_LEVEL@|@
@TABLE_NAME=JRBJ_DEPT
@SYS_NAME=YDYH
@DATA_DT=$(date +'%Y%m%d')
@LOAD_TIME=$(date +'%Y%m%d %H:%M:%S')
@ROW_COUNT=$(wc -l < JRBJ_DEPT.dat)
@LIST_SEP=@|@
@TGT_SYSTEM=ODS
@ADD_FLG=ADD
EO
fi

#-----业务流水控制文件检查
if [ -f "$BUSctl" ]; then
  echo "$BUSctl存在"
else
  touch $BUSctl
  cat > $BUSctl <<EO
NAME@|@DEPT_CODE@|@UNION_CODE@|@CREATE_BY@|@STATUS@|@BUS_TYPE@|@CARD_TYPE_ID@|@
@TABLE_NAME=JRBJ_BUS
@SYS_NAME=YDYH
@DATA_DT=$(date +'%Y%m%d')
@LOAD_TIME=$(date +'%Y%m%d %H:%M:%S')
@ROW_COUNT=$(wc -l < JRBJ_BUS.dat)
@LIST_SEP=@|@
@TGT_SYSTEM=ODS
@ADD_FLG=ADD
EO
fi

#-----背夹控制文件检查
if [ -f "$INTEGRATIONctl" ]; then
  echo "$INTEGRATIONctl存在"
else
  touch $INTEGRATIONctl
  cat > $INTEGRATIONctl <<EO
NAME@|@STATUS@|@UNION_CODE@|@CREATE_TIME@|@
@TABLE_NAME=JRBJ_BS_INTEGRATION
@SYS_NAME=YDYH
@DATA_DT=$(date +'%Y%m%d')
@LOAD_TIME=$(date +'%Y%m%d %H:%M:%S')
@ROW_COUNT=$(wc -l < JRBJ_BS_INTEGRATION.dat)
@LIST_SEP=@|@
@TGT_SYSTEM=ODS
@ADD_FLG=ADD
EO
fi

#--------------------------------------------------  结束

Linux测试主目录:
在这里插入图片描述

以下是准备卸数文件存放地址及备份文件地址
在这里插入图片描述
在这里插入图片描述

测试结果

执行./test.sh脚本后效果:
生成.dat数据.ctl控制文件,并且将.dat打包
在这里插入图片描述
这里进入odsbak备份目录,因为之前为空,没数据可备份
在这里插入图片描述
再次执行脚本,看到2022目录中导出了新文件(注意时间),并且odsbak目录中备份了上一波的文件。(上线肯定是使用crontab 定时器执行脚本的哈)
在这里插入图片描述

Linux创建crontab定时器任务:

crontab -e #修改定时任务配置
#进入i编辑,写入
0 23 * * * /home/odstest/test.sh #例:每天晚上11点执行

service crond start #启动定时任务
service crond restart #重启定时任务
crontab -l #查看定时任务列表
service crond stop #关闭定时任务
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:08:12  更:2022-03-06 13:11:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:12:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码