programing

Postgre에 테이블 나열SQL 스키마

javamemo 2023. 5. 25. 21:23
반응형

Postgre에 테이블 나열SQL 스키마

내가 할 때\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절에 지정된 대로 작동합니다..위에서 언급한 바와 같이 분리기로 사용됩니다.*이것은 정규 표현 표기법으로 변환됩니다..*,?이는 로 번역됩니다..,그리고.$문자 그대로 일치합니다.당신은 쓰기를 통해 필요할 때 이 패턴 문자들을 에뮬레이트할 수 있습니다.?위해서.,(R+|)위해서R*또는(R|)위해서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';

언급URL : https://stackoverflow.com/questions/15644152/list-tables-in-a-postgresql-schema

반응형