欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

更新oracle数据库的shell脚本

程序员文章站 2022-06-07 14:45:25
...

这是一个使用脚本更新数据库的一个例子.运行环境是bash shell,shell的第一个参数是go,第二个参数是sql文件的一个列表. 第一个参数实际上没有什么意义,但是它最好还是存在,它存在的目的是:不知道这个shell执行效果的人万一要运行这个脚本,在不添加go参数的时

这是一个使用脚本更新数据库的一个例子.运行环境是bash shell,shell的第一个参数是go,第二个参数是sql文件的一个列表.

第一个参数实际上没有什么意义,但是它最好还是存在,它存在的目的是:不知道这个shell执行效果的人万一要运行这个脚本,在不添加go参数的时候是不会执行的.从而保证数据库的安全.第二个参数是一个文件列表,格式如下:

tablename1,table1_sql.txt tablename2,table2_sql.txt tablename是用来更新的表的名字,table2_sql.txt得文件的内容是一些插入,更新,删除的sql语句。

具体的shell如下:

#! /bin/sh #下面是一个环境设定 TS_SYSTEM_DATE=`date ‘+%m%d%H%M%S’` TS_ZHIXING_DATE=`date ‘+%Y%m%d’` ORA_USR=${userid}/${password}@${instance}

TS_LOG_PATH=${LOG_DIR}/setup if test -d ${TS_LOG_PATH} then TS_RCODE=0 else mkdir -m 777 ${TS_LOG_PATH} fi TS_DBBACKUP_PATH=${DBBACKUP_DIR}/${TS_ZHIXING_DATE}_DBBACKUP if test -d ${TS_DBBACKUP_PATH} then TS_RCODE=0 else mkdir -m 777 -p ${TS_DBBACKUP_PATH} fi

TS_LOGFILE=${TS_LOG_PATH}/SQL_EXEC_${TS_SYSTEM_DATE}.log TS_QIAN=”QIAN” TS_HOU=”HOU” #SQL执行的LOG TS_SQL_JIKKOU=./SQLJIKKOU_${TS_SYSTEM_DATE}.dat

TS_RCODE=0

#下面3个函数是抽取出来的公共函数。重复用到多次,所以从shell主函数中提出来了。 #这个是检查表是否存在 table_exist_check() { #下面的这个语句是得到一个表存在的个数。一般为0,或1,表存在为1,没有表为0 TMPSTR=`echo $(sqlplus -s ${ora_userid}/${ora_password}@${instance}

if [[ "${TABLE_NUM}" == "0" ]]; then # echo “表${1}的个数是0个`date`”| tee -a ${TS_LOGFILE} TS_RCODE=1 rm -r ${TS_INPUT_FILE} exit ${TS_RCODE} else echo “” echo “++所处理TABLE,$1存在” return 0 fi }

#表更新前后的数据,分别取出来,然后diff,看是否达到预期效果. table_QIAN_HOU() {

sqlplus -s ${ora_userid}/${ora_password}@${instance} /dev/null set colsep’,’; set echo off; set [...]