📄 ppin.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 + -