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

📄 nload.txt

📁 Unix环境下用Shell编写的Oracle数据库数据批量导入导出程序
💻 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 + -