Psqlで\dt
を実行すると、現在のスキーマ内のテーブルのリストのみが表示されます(デフォルトではpublic
)。
すべてのスキーマまたは特定のスキーマ内のすべてのテーブルのリストを取得する方法を教えてください。
すべてのスキーマで
=> \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で指定されたとおりに動作します。これは、上記のように区切り文字として扱われ、*は正規表現表記に変換されます。、に変換される?、および文字通りに一致する$。必要に応じて、これらのパターン文字をエミュレートできますか。の場合、(R + |)(Rの場合、または(R |)の場合R?。通常の正規表現の解釈とは異なり、パターンは名前全体と一致する必要があるため、$は正規表現文字としては必要ありません(つまり、$はパターンに自動的に追加されます)。パターンを固定したくない場合は、先頭または末尾に*を書きます。二重引用符内では、すべての正規表現の特殊文字は特殊な意味を失い、文字通りに一致します。また、正規表現の特殊文字は、演算子名のパターン(つまり、\ doの引数)で文字通りに一致します。
information_schema
からテーブルを選択できます
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
information_schema
の代わりにpg_tables
を使うことも可能です。
select * from pg_tables where schemaname='public';
将来的にこれに遭遇する人々のために:
いくつかのスキーマに対する関係のリストを見たい場合は、
$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