답변:
모든 스키마에서 :
=> \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;
한 줄로 하는 것이 더 쉽습니다 .
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.*
. 맞습니까?