\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