📄 nload.txt
字号:
#!/usr/bin/ksh#FieldTable startFieldTable(){# echo $1 , $2 , $USER sqlplus $USER<<! > /tmp/$1.desc desc $1!flag=0iflag=0sqlstr=""sed -e'/^$/d' /tmp/$1.desc|while read line do head=`expr "$line" : "\(....\).*"` if [ $head = "SQL>" ] then if [ $flag -eq 0 ] then flag=4 else break fi fi if [ $flag -gt 1 ] then iflag=1; flag=`expr $flag - 1` fi if [ $flag -eq 1 ] then if [ $iflag -ne 0 ] then iflag=0 else sqlstr=$sqlstr"," fi head=`expr "$line" : "^[ ]*\([A-Z_][A-Z_0-9]*\).*"` if [ X$2 = X ] then sqlstr=$sqlstr$head else sqlstr=$sqlstr$2.$head fi fidone/usr/bin/rm /tmp/$1.desc#echo $sqlstr}#FieldTable end#SqlChange startSqlChange(){# echo "$1" + "$2"+ "$SQLSTATE"+"$allbit" b=`expr "A$2" : "A\(.*\)\.\*"`# echo $b if [ X$b = X ] then# echo 888 $b nstr="\*" table=`expr "$SQLSTATE" : ".*[ ]*from[ ]*\(.*\)[ ]*.*"` else# echo 999 $b nstr=$b"\.\*" tablenames=`expr "$SQLSTATE" : ".*[ ]*from[ ]*\(.*\)"`# echo hhhh $tablenames while true do tables=`expr "$tablenames" : "\(.*\)[,].*"`# echo iiii $tables if [ X"$tables" = X ] then tables=$tablenames fi# echo 111 $tables table=`expr "$tables" : "[ ]*\(.*\)[ ][ ]*$b[ ]*"`# echo 222 $table if [ X$table != X ] then break fi tablenames=`expr "$tablenames" : ".*[,]\(.*\)"`# echo 333 $tablenames if [ X"$tablenames" = X ] then break fi done fi if [ X$table = X ] then echo "invalid identifier in select statment , -904 " exit 2 fi# echo $table FieldTable $table $b# echo "$2" $nstr 555 $sqlstr SQLSTATE=`echo "$SQLSTATE"|sed -e "s/$nstr/$sqlstr/"`# echo xxx "$SQLSTATE"}#SqlChange end#main start USAGE="usage : $0 -u user/passwd {-t tablename|-e statement} [-f path] [-p sepchar]"OUTFILE="./myunload.txt"uflag=0tflag=0aflag=0eflag=0fflag=0SEPCHAR='|'SQLSTATE=""while getopts :u:t:e:f:p: ido case $i in a ) aflag=1;; u ) uflag=`expr $uflag + 1` USER=$OPTARG;; e ) eflag=`expr $eflag + 1` SQLSTATE="$OPTARG" ;; t ) tflag=`expr $tflag + 1` SQLSTATE="select * from "$OPTARG if [ $fflag -ne 1 ] then OUTFILE=${OPTARG}.txt fi ;; f ) fflag=`expr $fflag + 1` OUTFILE=$OPTARG;; p ) SEPCHAR=$OPTARG;; ? ) echo $USAGE exit 2;; esacdoneif [ $uflag -ne 1 ]then echo $USAGE exit 2fiif [ $tflag -eq 1 -a $eflag -eq 1 ]then echo $USAGE exit 2fi#echo "$SQLSTATE" , "$OUTFILE"while truedoallbit=`expr "$SQLSTATE" : ".*[, ]\([a-z]*[.]*\*\)[ ,].*"`if [ X"$allbit" = X ]then# echo xxxxxxxxxxxxx breakelse# echo 777 "$allbit" SqlChange "$SQLSTATE" "$allbit"fidone#selectstr=`expr "$SQLSTATE" : "\(.*\)[ ]from[ ].*"`#echo "$SQLSTATE"\;|sed -e "s/$selectstr/`echo $selectstr|sed -e "s/,/\|\|\'$SEPCHAR\'\|\|/g"`/" >/tmp/$$.sqlsqlplus $USER<<!>/tmp/$$.txtset pagesize 9999set colsep $SEPCHARset head offset heads offset und offset trim offset trims offset wrap onset recsepchar '-'$SQLSTATE;!#/usr/bin/rm /tmp/$$.txtlflag=0linestr="">$OUTFILEsed -e'/^$/d' /tmp/$$.txt|while read line do if [ $lflag -eq 0 ] then head=`expr "$line" : "\(....\).*"` if [ $head = "SQL>" ] then lflag=1 fi continue else if [ X"$line" != X -a X"$line" = X`echo $line|awk /^--*$/` ] then echo $linestr$SEPCHAR linestr="" else if [ X"$linestr" = X ] then linestr=$line else linestr=$linestr$SEPCHAR$line fi fi fidone | sed -e 's/ //g' >>$OUTFILE#echo $OUTFILEecho /tmp/$$.txtecho `wc -l $OUTFILE |awk '{print $1}'` rows selected.#/usr/bin/rm /tmp/$$.txt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -