[MySQL]全テーブルのデータ件数(count)をcliからワンライナーで取得する

カテゴリ: Linux, MySQL | タグ:

下記のコマンドでDBに存在する全テーブルのcountを取得できます


mysql --defaults-file=.my.cnf -e "select concat('select count(*) as cnt, ''', table_name, ''' as name from ', table_name, ' UNION ALL') from information_schema.tables where TABLE_SCHEMA='sakila' AND TABLE_TYPE='BASE TABLE'" -N | sed -e "$ s/ UNION ALL/;/g" | mysql --defaults-file=.my.cnf
  • 途中に出てくるTABLE_SCHEMA='sakila'の部分を接続先DBに変更してください。
  • `--defaults-file=.my.cnf`で指定している.my.cnfの意味は、こちらの記事を参考にしてください
  • 途中に出てくるsedの意味は、こちらの記事を参考にしてください

2行に分ける場合

上記だと長すぎる場合は、以下のように2行に分けてシェルスクリプトにしておくと(少しだけ)読みやすくなります。

#!/bin/bash

export SQL="select concat('select count(*) as cnt, ''', table_name, ''' as name from ', table_name, ' UNION ALL') from information_schema.tables where TABLE_SCHEMA='sakila' AND TABLE_TYPE='BASE TABLE'"
mysql --defaults-file=.my.cnf -e "$SQL" -N | sed -e "$ s/ UNION ALL/;/g" | mysql --defaults-file=.my.cnf
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。