这是一个使用脚本更新数据库的一个例子.运行环境是bash shell,shell的第一个参数是go,第二个参数是sql文件的一个列表. 第一个参数实际上没有什么意义,但是它最好还是存在,它存在的目的是:不知道这个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}
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脚本, 感谢原作者分享。