ORACLEの全てのテーブルをdescした結果一覧を吐くスクリプト
空き時間にちょこっと書いてみたのでさらしてみます。
遠隔で操作しててNWの状態があまり良くなく、何度もsqlplusでdescできないなぁという状況があったので書きました。
ただし、持ち出しNGのため、帰宅して自宅で書いてデバックしてない。もしかたらスペルミス等あるかも。
#もし間違ってたら明日直します。
#!/bin/ksh ORACLE_USR="usr" ORACLE_PWD="***" ORACLE_SID="exdb" SQL_FILE=./tmp.sql SPOOL_FILE=./${ORACLE_USR}_${ORACLE_SID}_desc.txt i=0 flag=0 cat /dev/null > ${SQL_FILE} cat /dev/null > ${SPOOL_FILE} echo "set trimspool on" >> ${SQL_FILE} echo "spool ${SPOOL_FILE}" >> ${SQL_FILE} echo "select * from tab;" >> ${SQL_FILE} echo "spool off" >> ${SQL_FILE} sqlplus ${ORACLE_USR}/${ORACLE_PWD}@${ORACLE_SID} < ${SQL_FILE} cat /dev/null > ${SQL_FILE} echo "set trimspool on" >> ${SQL_FILE} echo "spool ${SPOOL_FILE}" >> ${SQL_FILE} `which awk` -v i=${i}, flag=${flag} '{ if ( $1 ~ /^$/ ) flag += 1; if ( i >= 4 && flag < 2 ) print "desc " $1 ";"; i += 1; }' ${SPOOL_FILE} >> ${SQL_FILE} echo "spool off" >> ${SQL_FILE} cat /dev/null > ${SPOOL_FILE} sqlplus ${ORACLE_USR}/${ORACLE_PWD}@${ORACLE_SID} < ${SQL_FILE} rm -f ${SQL_FILE} exit 0
つまらないものですが、もし需要があればご利用下さい。