【PostgreSQL】テーブル一覧とデータ件数を取得するSQL
テーブル一覧を取得する(SQL)
テーブル一覧を取得するSQL文を紹介します。
※ここで紹介するSQLは、そのまま実行できるので試してみて下さい。
--テーブル一覧をテーブル名順に取得するSQL
select tablename from pg_tables
where schemaname not in('pg_catalog','information_schema')
order by tablename;
テーブル一覧を取得する(psql)
単にテーブルの一覧を取得するだけなら、psqlでこのコマンドで可能です。※最初の記号は「¥」です。
\dt
実行結果はこんな感じです。
テーブル一覧とそのデータ件数を表示する
テーブルごとのデータ数を一覧表示するSQL文を紹介します。
--テーブルごとのデータ数を表示する
SELECT
pg_class.relname , pg_class.reltuples
FROM pg_stat_user_tables
INNER JOIN pg_class ON pg_stat_user_tables.relname = pg_class.relname
order by cast(pg_class.reltuples as numeric) desc;
ちなみにreltuples(レコード数)が大きいと「1e+06」のように表示されることがあります。
この例では、1e+06=1×(10の6乗)=1,000,000になります。
「1e+06」のように表示したくない時は、(pg_class.reltuples / 1)と1で割ると
数値で表示されるようになると思います。(それでもかなり大きいと1eで表示されますが)
--テーブルごとのデータ数を表示する(1e+XX表示させないパターン)
SELECT
pg_class.relname , (pg_class.reltuples / 1)
FROM pg_stat_user_tables
INNER JOIN pg_class ON pg_stat_user_tables.relname = pg_class.relname
order by cast(pg_class.reltuples as numeric) desc;
Delete文を生成するSQL
テーブル一覧を取得するSQLを使い、delete文を作成するSQLです。
このSQLを投げると「delete from テーブル名;」の文が結果に出力されます。
※テーブル名で指定する場合は、最後の行のコメントアウトを外してください。
--テーブル一覧からdelete文を作成する
select
'delete from ' || tablename || ';' as del_sql from pg_tables -- delete文
where schemaname not in('pg_catalog','information_schema')
--and tablename like '%テーブル名を指定%';
関連記事