MySQLで任意のデータベースの全テーブルのレコード数を一覧表示

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 |
+----------+-------+