回答:
すべてのスキーマで:
=> \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
)で文字どおり一致します。
\dt public.user_info, public.user_scope
?
\dt public.a; \dt public.b;
にしないでください。1行で行う方が簡単です。
search_path
し、デフォルトは"$user", public.*
です。したがって、set search_path=s; \dt
はスキーマ内のすべてのテーブルをリストしますs
。
からテーブルを選択できます information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
代わりにinformation_schema
それを使用することが可能pg_tables
です:
select * from pg_tables where schemaname='public';
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
からアイテムを一覧表示しないというアクセス許可の問題が見つかりましたpublic
が、pg_tables
メソッドは適切に機能しました。どうもありがとう!
将来これに遭遇する人のために:
複数のスキーマの関係のリストを表示したい場合:
$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
\dt
と同等\dt public.*
です、そうですか?