⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppin.sh

📁 本人编的第一个shell
💻 SH
字号:
#trap '' 1 2 3 5 7 9 15 13#查看数据库中表是否存在existstable(){sqlplus -s $username$PASS <<!|grep -v grep|grep -v EXISTS|grep exists|wc -lselect 'exists' from all_tables where table_name = upper('$tablename')/!}#取得用户输入的密码getcon(){stty -echo stty rawconchar=`dd if=/dev/tty bs=1 count=1 2>/dev/null`stty -rawstty echo echo "$conchar"}getpass() {     i=0;     while      [ "$p" = "
" -o "$i" -ge 16 ] && break      p=`getcon`      PASS=`echo $PASS$p`     echo "*\c" > /dev/tty     do      i=`expr $i + 1`     done	echo "\n" > /dev/tty	if [ $i -ge 16 ];	then		echo "WARNING:password is large lentgh!"	fi}#取得数据包含列数量getcolcnt(){  wc -l $filename|read colcnt shname  if [ $colcnt -ne 0 ];  then	head -1 $filename|tr -s $terminated '\n'|wc -l|read colcnt    #head -1 $filename|awk -v fs=$terminated '{print split($1,myarr,fs}'|read colcnt	#head -1 $filename|tr -s $terminated '\n'|wc -l|read colcnt    #head -1 $filename|wc -w|read colcnt shname  fi}#创建临时数据库表createtable(){echo "" > $sqlnameecho "create table $tablename" >> $sqlnameecho "(" >>$sqlnamei=1while [ "$i" -lt "$colcnt" ]do      echo "a$i varchar2($colsize)," >> $sqlname      i=`expr $i + 1`doneecho "a$i varchar2($colsize)" >> $sqlnameecho ")" >> $sqlnamesqlplus -s $username$PASS <<!|grep -v grep |grep -v create @$sqlname/exit!}#生成sqlload控制文件并执行createfile(){echo "" > $ctrlnameecho "LOAD DATA" >> $ctrlnameecho "INFILE '$filename'" >> $ctrlnameecho "APPEND" >> $ctrlnameecho "INTO TABLE $tablename" >> $ctrlnameecho "fields terminated by '$terminated'">> $ctrlnameecho "(" >> $ctrlnamei=1while [ "$i" -lt "$colcnt" ]do      echo "a$i char($colsize)," >> $ctrlname      i=`expr $i + 1`doneecho "a$i char($colsize)" >> $ctrlnameecho ")" >> $ctrlname}#------------------------------##--------主程序运行------------##------------------------------##校验输入参数的正确性if [ $# -lt 3 ];then  echo "Usage:$0 username tablename filename [terminated] [colsize]"   exit 1fiusername=$1tablename=$2filename=$3terminated=$4colsize=$5if [ "$terminated" != "" ];then	:else	terminated="|"fiif [ "$colsize" != "" ];then	:else	colsize=200fi#判断文件是否存在if [ ! -r $filename ]then echo "WARNING: the FILE=$FILE is not exist !"exit 1fi#判断文件是否有扩展名.datecho $filename|awk '{if(match($0,/.dat/)) print "1"}'|read extcntif [ "$extcnt" != "" ];then	:else	echo "WARNING:pls renanme $filename to $filename.dat" 	exit 1fi#初始化环境变量ctrlname=tmp.ldrsqlname=tmp.sqlcolcnt=0#检查数据库密码是否已经输入,如果未输入提示输入密码awk 'BEGIN {print match("'$username'",/\//)}'|read passcntif [ $passcnt -le 0 ];then#保存stty环境变量到savedsttysavedstty=`stty -g`echo "Please input password:\c"     getpass#从savedstty中恢复stty环境变量stty $savedstty#检查密码是否有效_LETTERS_ONLY=`echo $PASS|awk '{if ($0 ~ /[A-Za-z0-9]/) print "1"}'`if [ "$_LETTERS_ONLY" != "" ];then    PASS=/$PASSelse    echo "WARNING:password is not valid!"    exit 1fifi#取得数据列数getcolcntif [ "$colcnt" -le 0 ];then	echo "WARNING:datafile is null,don't load"	exit 1fi#检查表是否存在existstable|read tablecntif [ "$tablecnt" -ge 1 ];then	echo "WARNING:table have exists,pls change tablename!"	exit 1else	createtablefi#创建控制文件createfileif [ ! -r $ctrlname ]then	echo "Error: the control file is not exist !"	exit 1fi#执行sqlload导入sqlldr userid=$username$PASS control=tmp.ldr > .tmp.log 2>&1 if [ -r $ctrlname ]then	rm -f $ctrlnamefiif [ -r $sqlname ]then	rm -f $sqlnamefiecho "SQLLDR SUCCESS! PLS GOTO DB CHECK!" 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -