shell导数通用脚本

为了解决不断增长的系统数据文件需求,本文分享了一种使用Shell脚本实现的通用数据导出方法。通过spool进行数据导出,并将相关记录存储在数据库表中,实现定时执行和自动化处理。文章包含脚本代码和建表脚本,适合需要自动化数据导出的场景。
摘要由CSDN通过智能技术生成

目的

最近维护生产系统发现不断地有关联系统需要我这边提供数据文件的情况,之前没有做统一的卸数脚本,导致定时执行的shell越来越多,于是最近捣鼓了一个通用脚本,分享一下。

思路

利用spool进行数据导出,导出的查询sql、导出文件名、上传地址、上传用户等记录在数据库表中,定时执行shell,查询到结果后,循环处理,并在处理成功后,update结束标志

shell代码

#!/bin/bash
#引用crontab执行用户的环境变量,根据需要修改
source /app/.profile
#数据库SID名
sid=orcl
#数据库用户名
orauser=oracle
#数据库用户名
orapasswd=oracle
#当前服务器日期
datenow=$(date +%Y%m%d)
#日志存放路径&日志文件名
log_file=/app/log/exp_$(date +%Y%m%d).log
#需要执行业务种类
#sql~导出文件名~ok文件名~上传服务器IP~上传服务器用户名~密码~上传路径
value=`sqlplus -S "${orauser}/${orapasswd}@${sid}" << !
set heading off 
set feedback off
set pagesize 0
set verify off
set echo off
set linesize 2000
select val||'~'||exp_name||'~'||okfile_name||'~'||up_ip||'~'||up_user||'~'||up_pwd||'~'||up_dir||'^' from tbshell where type = 'K_EXP_SQL';
exit;
!`
#将返回字符串进行数组切分,分隔符'^'
OLD_IFS="$IFS"
IFS="^"
arr=($value)
IFS="$OLD_IFS"
#循环取数处理开始
for((i=0;i<${
   #arr[@]};i++));do
 #再次切分,分隔符'~':sql~导出文件名~ok文件名~上传服务器IP~上传服务器用户名~密码~上传路径
 OLD_IFS="$IFS"
 IFS="~"
 arr_n=(${
   arr[${
   i}]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值