MySQLで任意のデータベース内の全テーブルのレコード数を一覧表示させるシェルプログラムです。
「show tables」コマンドで全テーブル名を取得して、各テーブルをSelect count(*)した結果をUNIONで繋げてます。
シェル
MYSQL_USR=xxx MYSQL_PASS=xxx MYSQL_DB=xxx TABLES=(`mysql -u${MYSQL_USR} --password=${MYSQL_PASS} -D${MYSQL_DB} -sN -e "show tables"`) UNION_SQL="" for TBL in ${TABLES[@]}; do UNION_SQL="${UNION_SQL} UNION ALL SELECT '${TBL}' TBL_NAM,count(*) count from ${TBL} " done mysql -u${MYSQL_USR} --password=${MYSQL_PASS} -D${MYSQL_DB} -e "${UNION_SQL:11}"
結果
+----------+-------+ | TBL_NAM | count | +----------+-------+ | tableA | 1 | | tableB | 113 | | tableC | 204 | +----------+-------+