\dt
psqlでを実行すると、現在のスキーマのテーブルのリストのみが取得されます(public
デフォルト)。
すべてのスキーマまたは特定のスキーマのすべてのテーブルのリストを取得するにはどうすればよいですか?
\dt
psqlでを実行すると、現在のスキーマのテーブルのリストのみが取得されます(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で指定されているとおりに機能します。ただし
.
、上記のように区切り文字として使用され*
、正規表現表記.*
に?
変換され.
、に変換され、$
文字通り一致します。?
for.
、(R+|)
forR*
、または(R|)
forを記述することにより、必要に応じてこれらのパターン文字をエミュレートできます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
特定のスキーマ内のすべてのテーブルを一覧表示することに興味がある場合は、この回答が適切であることがわかりました。
SELECT table_schema||'.'||table_name AS full_rel_name
FROM information_schema.tables
WHERE table_schema = 'yourschemaname';