ど素人から毛を生やす。<延>

[MySQL]レコードが存在するテーブルを抽出

Web > Other 2020年11月5日(最終更新:24日前)

どもです。

テーブルがたくさんあるけど、使われていないテーブルもたくさんあるDBで、使われている=レコードが存在するテーブルのみ抽出したかった。

参考:
[Qiita]MySQLで全テーブルのレコード数を一覧表示する

これWHEREに追記したらレコードが存在するテーブルだけ抽出できそうですね。

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'DB名' AND table_rows > 0;

これでOKでした。

どうやらINFORMATION_SCHEMAテーブルというところにアクセスすれば、DBの色々な情報が見られるようですね。


○追記
mysql4.1とかいうド旧いDBでこれをやろうとしたら、
SELECT command denied to user '****'@'***.**.**.***' for table 'TABLES
というエラーを返されました。
権限が無いのかな?と思ったら、そもそもド旧すぎてINFORMATION_SCHEMAが存在してないとのこと。

そこで
SHOW TABLE STATUS FROM DB名
とすると、Rows列にレコード数が出るので、これでなんとか目的が達成できます。
ただし、絞り込みができないのと、InnoDBだと正確なレコード数を返してくれない可能性があるらしいので、そこんとこは注意。

いや、INFORMATION_SCHEMA未搭載のMySQLバージョンでMyISAMじゃなくてInnoDB使ってるとか、そんなアンバランスなDBはさすがに存在しないと思うけど…

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)