MySQLの全てのテーブルをdescした結果一覧を吐くスクリプト
何となくMySQLバージョンも書いてみた。
全体的にダサいけど、とりあえず、ちゃんと動きます。
#!/bin/sh # 2007/09/03 seratch # *** get_desc_result.sh - MySQL ver. - *** # Function function DeleteTmpFiles { rm -f ${TMP_SQL_FILE} rm -f ${TMP_SPOOL_FILE} rm -f ${SQL_FILE} } function CheckSQLExecution { if [ $? -ne 0 ]; then echo "<ERROR> SQL Execute Error!" DeleteTmpFiles exit 1 fi } function MySQLConnect { mysql -u${USR} -p${PWD} ${DB} < $1 > $2 } # Define USR="user_name" PWD="********" DB="db_name" TMP_SQL_FILE=./tmp.sql TMP_SPOOL_FILE=./tmp.log SQL_FILE=./desc.sql SPOOL_FILE=./desc_result.log # Initialize Files cat /dev/null > ${SQL_FILE} cat /dev/null > ${SPOOL_FILE} # Make SQL File echo "show tables;" > ${TMP_SQL_FILE} # Execute SQL MySQLConnect ${TMP_SQL_FILE} ${TMP_SPOOL_FILE} CheckSQLExecution # Make SQL File i=0 cat ${TMP_SPOOL_FILE} | while read LINE do if [ ${i} -ge 1 ]; then echo "select '';" >> ${SQL_FILE} echo "select '--- ${LINE} ---';" >> ${SQL_FILE} echo "desc ${LINE};" >> ${SQL_FILE} fi let i=${i}+1 done # Execute SQL MySQLConnect ${SQL_FILE} ${SPOOL_FILE} CheckSQLExecution i=0 `which awk` -v i=${i} '{ if ( $0 ~ /^$/ && i != 1 ) i = 1; else if ( $0 ~ /^$/ && i == 1 ) print $0; else if ( i == 1 ) i = 2; if ( i == 0 ) print $0; if ( i == 2 ) i = 0; }' ${SPOOL_FILE} > ${TMP_SPOOL_FILE} mv ${TMP_SPOOL_FILE} ${SPOOL_FILE} echo "--- Script Normal End ---" DeleteTmpFiles exit 0
こちらもつまらないものですが、もし需要があればご利用下さい。