MySQL

 

MySQLで全テーブルのレコード数を取得する

全テーブル+ビューのレコード数を取得するシェルスクリプトを紹介します。excelに貼り付け易いようにグリッドoffでタブ区切りで出力するオプションもあります。全テーブルをカウントするので負荷がかかる点にご注意下さい。

新サイト、tree-mapsを公開しました!!

tree-maps: 地図のWEB TOOLの事ならtree-mapsにお任せ!

地図に関するWEB TOOL専門サイトです!!

大画面で大量の緯度経度を一気にプロット、ジオコーディング、DMS<->DEGの相互変換等ができます!

◯ 広告

全テーブルとビューのレコード数を取得するシェルスクリプトです。

注意点として、単純にselect count(*)を繰り返すので多少負荷がかかる点です。

開発時のデバッグ用途とし、本番環境で使用しない事をおすすめします。

#!/bin/sh

# スキーマ名
schemaName=$1
# excel貼り付け用に加工するオプション
grid=$2

usage() {
    echo "Usage: `basename $0` <schemaName> <on|off>"
    exit 1
}
test -z $schemaName && usage

tables=($(mysql -uroot information_schema -Ne "select table_name from tables where table_schema='$schemaName';"))
views=($(mysql -uroot information_schema -Ne "select table_name from views where table_schema='$schemaName';"))

if [ -z $tables ] && [ -z $views ]; then
    echo "table and view are not found."
    exit 1
fi

if [ "$grid" = "on" ]; then
    sql_option="BN"
fi

for table in "${tables[@] views[@]}"
do
    sql="$sql(select '$table' as 'table_name', format(count(*), 0) as count from $table) union all"
done
sql="$(echo $sql | sed -e 's/ union all$//');"
mysql -uroot $schemaName -${sql_option}e "$sql"

mysqlコマンドのオプション「BN」を指定すると、グリッドがオフ・ヘッダがオフで出力できます。

(B=バッチモード、N=ノーヘッダー)

(例)mysql -uroot test -BNe "select count(*) from hoge"

$ ./get_table_count.sh test off
+------------+-------+
| table_name | count |
+------------+-------+
| locktest   | 0     |
| s1         | 0     |
| s2         | 0     |
| s3         | 0     |
| t1         | 3     |
| t2         | 3     |
+------------+-------+

開発用途の場合はグリッドonの方が見やすいかと思います。

$ ./get_table_count.sh test on
locktest	0
s1	0
s2	0
s3	0
t1	3
t2	3

タブ区切りなので、excelに貼り付けた時に2列に分かれて貼り付ける事ができます

treeおすすめの書籍です!
【送料無料】実践ハイパフォ-マンスMySQL第2版

【送料無料】実践ハイパフォ-マンスMySQL第2版
価格:4,830円(税込、送料別)

【送料無料】エキスパ-トのためのMySQL運用+管理トラブルシュ-ティングガイド

【送料無料】エキスパ-トのためのMySQL運用+管理トラブルシュ-ティングガイド
価格:3,465円(税込、送料別)

【送料無料】基礎からのMySQL改訂版

【送料無料】基礎からのMySQL改訂版
価格:3,129円(税込、送料別)

◯ 広告