432

\dtpsqlでを実行すると、現在のスキーマのテーブルのリストのみが取得されます(publicデフォルト)。

すべてのスキーマまたは特定のスキーマのすべてのテーブルのリストを取得するにはどうすればよいですか?

4

5 に答える 5

673

すべてのスキーマで:

=> \dt *.*

特定のスキーマの場合:

=> \dt public.*

いくつかの制限付きで正規表現を使用することが可能です

\dt (public|s).(s|t)
       List of relations
 Schema | Name | Type  | Owner 
--------+------+-------+-------
 public | s    | table | cpn
 public | t    | table | cpn
 s      | t    | table | cpn

上級ユーザーは、文字クラスなどの正規表現表記([0-9]など)を使用して、任意の数字に一致させることができます。正規表現の特殊文字はすべて、セクション9.7.3で指定されているとおりに機能します。ただし.、上記のように区切り文字として使用され*、正規表現表記.*?変換され.、に変換され、$文字通り一致します。?for .(R+|)for R*、または(R|)forを記述することにより、必要に応じてこれらのパターン文字をエミュレートできますR?$正規表現の通常の解釈とは異なり、パターンは名前全体と一致する必要があるため、正規表現文字としては必要ありません(つまり、$パターンに自動的に追加されます)。*パターンを固定したくない場合は、最初および/または最後に書き込みます。二重引用符内では、すべての正規表現の特殊文字は特別な意味を失い、文字通り一致することに注意してください。また、正規表現の特殊文字は、演算子名パターン(つまり、の引数\do)で文字通り一致します。

于 2013-03-26T18:40:28.457 に答える
320

からテーブルを選択できますinformation_schema

SELECT * FROM information_schema.tables 
WHERE table_schema = 'public'
于 2013-03-26T18:12:28.737 に答える
73

代わりにinformation_schema使用することが可能pg_tablesです:

select * from pg_tables where schemaname='public';
于 2015-05-28T14:39:51.940 に答える
12

将来これに遭遇する人のために:

複数のスキーマのリレーションのリストを表示したい場合:

$psql mydatabase
mydatabase=# SET search_path TO public, usa;   #schema examples
SET
mydatabase=# \dt
              List of relations
 Schema |      Name       | Type  |  Owner
--------+-----------------+-------+----------
 public | counties        | table | postgres
 public | spatial_ref_sys | table | postgres
 public | states          | table | postgres
 public | us_cities       | table | postgres
 usa    | census2010      | table | postgres
于 2018-02-01T02:10:49.997 に答える
5

特定のスキーマ内のすべてのテーブルを一覧表示することに興味がある場合は、この回答が適切であることがわかりました。

SELECT table_schema||'.'||table_name AS full_rel_name
  FROM information_schema.tables
 WHERE table_schema = 'yourschemaname';
于 2021-03-29T09:22:23.130 に答える