[sql] postgresql information_schema의 모든 테이블을 나열하십시오.

PostgreSQL의 information_schema 내의 모든 테이블을 나열하는 가장 좋은 방법은 무엇입니까?

명확히하기 위해 : 빈 DB로 작업하고 있지만 (내 테이블을 추가하지 않았습니다) information_schema 구조의 모든 테이블을보고 싶습니다.



답변

select * from information_schema.tables특정 데이터베이스에 대해 Postgres가 관리하는 모든 테이블 목록을 가져 오기 위해 실행할 수 있어야 합니다.

where table_schema = 'information_schema'정보 스키마의 테이블 만 보려면를 추가 할 수도 있습니다 .


답변

테이블을 나열하려면 다음을 사용하십시오.

SELECT table_name FROM information_schema.tables WHERE table_schema='public'

생성 한 테이블 만 나열됩니다.


답변

\dt information_schema.

psql 내에서 괜찮을 것입니다.


답변

\ “Z”명령은 또한 목록 테이블 때 대화 형 psql의 세션 내부에 좋은 방법입니다.

예.

# psql -d mcdb -U admin -p 5555
mcdb=# /z
                           Access privileges for database "mcdb"
 Schema |              Name              |   Type   |           Access privileges
--------+--------------------------------+----------+---------------------------------------
 public | activities                     | table    |
 public | activities_id_seq              | sequence |
 public | activities_users_mapping       | table    |
[..]
 public | v_schedules_2                  | view     | {admin=arwdxt/admin,viewuser=r/admin}
 public | v_systems                      | view     |
 public | vapp_backups                   | table    |
 public | vm_client                      | table    |
 public | vm_datastore                   | table    |
 public | vmentity_hle_map               | table    |
(148 rows)


답변

당신은 또한 사용할 수 있습니다

select * from pg_tables where schemaname = 'information_schema'

일반적으로 pg * 테이블을 사용하면 권한에 제한되지 않고 (물론 테이블에 액세스 할 수있는 경우) db의 모든 내용을 볼 수 있습니다.


답변

'xxx'postgresql의 개인 스키마 :

SELECT table_name FROM information_schema.tables 
 WHERE table_schema = 'xxx' AND table_type = 'BASE TABLE'

이 없으면 table_type = 'BASE TABLE'테이블과 뷰를 나열 합니다.


답변

1. information_schema.tables에서 모든 테이블과 뷰를 가져옵니다. information_schema 및 pg_catalog를 포함합니다.

select * from information_schema.tables

2.get 테이블 및 뷰는 특정 스키마에 속합니다.

select * from information_schema.tables
    where table_schema not in ('information_schema', 'pg_catalog')

3.get 테이블 만 (거의 \ dt)

select * from information_schema.tables
    where table_schema not in ('information_schema', 'pg_catalog') and
    table_type = 'BASE TABLE'