2022年7月19日火曜日

MySQL ですべてのテーブルのレコード数を一発で確認する方法

MySQL ですべてのテーブルのレコード数を一発で確認する方法

概要

レコードがまだ残っているのか確認するときに便利です

環境

  • macOS 11.6.7
  • MySQL 8.0.29

スクリプト

1行

export DB_NAME=test && export DB_USER=root && export DB_PASS='' && for table_name in `mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "show tables \G" | grep Tables_in | awk '{print $NF}'`; do echo $table_name; mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "select count(*) from $table_name;"; done

改行あり

export DB_NAME=test && \
export DB_USER=root && \
export DB_PASS='' && \
for table_name in `mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "show tables \G" | grep Tables_in | awk '{print $NF}'`
do
  echo $table_name
  mysql -u ${DB_USER} --password=${DB_PASS} ${DB_NAME} -e "select count(*) from $table_name;"
done

P.S table_rows は概算値なので正確な値は取得できない

以下のそのパターンです

全テーブルの合計のレコード数を取得

export DB_NAME=test && mysql -u root -p ${DB_NAME} -e "SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \"${DB_NAME}\";"

テーブルごとに表示する

export DB_NAME=test && mysql -u root -p ${DB_NAME} -e "SELECT table_name, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \"${DB_NAME}\";"

参考サイト

0 件のコメント:

コメントを投稿