【PostgreSQL】テーブル一覧とデータ件数を取得するSQL

PostgreSQL構文

テーブル一覧を取得する(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=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 '%テーブル名を指定%';

 

 

関連記事