[postgresql] PostgreSQL 스키마의 테이블 나열

\dtpsql에서 수행 할 때 현재 스키마의 테이블 목록 만 가져옵니다 ( 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+|)for R*또는 (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


답변