下記のコマンドで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
こちらもおススメ