这是一个使用脚本更新数据库的一个例子.运行环境是bash shell,shell的第一个参数是go,第二个参数是sql文件的一个列表. 第一个参数实际上没有什么意义,但是它最好还是存在,本文来源gao@!dai!ma.com搞$$代^@码网*它存在的目的是:不知道这个shell执行效果的人万一要运行这个脚本,在不添加go参数的时
这是一个使用脚本更新数据库的一个例子.运行环境是bash shell,shell的第一个参数是go,第二个参数是sql文件的一个列表.
第一个参数实际上没有什么意义,但是它最好还是存在,它存在的目的是:不知道这个shell执行效果的人万一要运行这个脚本,在不添加go参数的时候是不会执行的.从而保证数据库的安全.第二个参数是一个文件列表,格式如下:
tablename1,table1_sql.txttablename2,table2_sql.txttablename是用来更新的表的名字,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}/setupif test -d ${TS_LOG_PATH}thenTS_RCODE=0elsemkdir -m 777 ${TS_LOG_PATH}fiTS_DBBACKUP_PATH=${DBBACKUP_DIR}/${TS_ZHIXING_DATE}_DBBACKUPif test -d ${TS_DBBACKUP_PATH}thenTS_RCODE=0elsemkdir -m 777 -p ${TS_DBBACKUP_PATH}fi
TS_LOGFILE=${TS_LOG_PATH}/SQL_EXEC_${TS_SYSTEM_DATE}.logTS_QIAN=”QIAN”TS_HOU=”HOU”#SQL执行的LOGTS_SQL_JIKKOU=./SQLJIKKOU_${TS_SYSTEM_DATE}.dat
TS_RCODE=0
#下面3个函数是抽取出来的公共函数。重复用到多次,所以从shell主函数中提出来了。#这个是检查表是否存在table_exist_check(){#下面的这个语句是得到一个表存在的个数。一般为0,或1,表存在为1,没有表为0TMPSTR=`echo $(sqlplus -s ${ora_userid}/${ora_password}@${instance} << sql_endselect count(tablename) from tab where tablename=upper(‘$1′);exitsql_end)`TABLE_NUM=`echo ${TMPSTR}|awk ‘{print $3}’`
if [[ “${TABLE_NUM}” == “0” ]]; then#echo “表${1}的个数是0个`date`”| tee -a ${TS_LOGFILE}TS_RCODE=1rm -r ${TS_INPUT_FILE}exit ${TS_RCODE}elseecho “”echo “++所处理TABLE,$1存在”return 0fi}
#表更新前后的数据,分别取出来,然后diff,看是否达到预期效果.table_QIAN_HOU(){
sqlplus -s ${ora_userid}/${ora_password}@${instance} </dev/nullset colsep’,’;set echo off;set […]
原文地址:更新oracle数据库的shell脚本, 感谢原作者分享。