답변:
에서 문서 :
select table_name from INFORMATION_SCHEMA.views;
시스템보기가 결과를 원하지 않으면 다음을 시도하십시오.
select table_name from INFORMATION_SCHEMA.views WHERE table_schema = ANY (current_schemas(false))
where table_schema='USERNAME'
쿼리에 추가 하십시오
public
스키마가 있습니다.
pg_catalog.pg_views
원하는 정보를 쿼리 할 수 있습니다 .
select viewname from pg_catalog.pg_views;
다른 스키마에 동일한 이름을 가진 여러 개의 뷰가 있고 시스템 뷰를 생략 한 경우를 위해 스키마 이름을 가져 오도록 개선 된 쿼리 :
select schemaname, viewname from pg_catalog.pg_views
where schemaname NOT IN ('pg_catalog', 'information_schema')
order by schemaname, viewname;
IMHO,이 방법은 Phil의 답변에 대한 의견 에 언급 된 이유로 INFORMATION_SCHEMA.views를 쿼리하는 것보다 낫습니다 .
시험:
SELECT n.nspname AS table_schema,
pg_catalog.pg_get_userbyid(c.relowner) AS table_owner,
c.relname AS table_name
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
WHERE c.relkind = 'v'
;
더 자세한 내용을 원하면 필요에 따라 다음을 수정할 수 있습니다.
SELECT n.nspname AS table_schema,
pg_catalog.pg_get_userbyid(c.relowner) AS table_owner,
c.relname AS table_name,
s.n_live_tup AS row_count,
count (a.attname) AS column_count,
pg_catalog.obj_description(c.oid, 'pg_class') AS comments,
CASE c.relkind
WHEN 'v'
THEN pg_catalog.pg_get_viewdef(c.oid, true)
ELSE null
END AS query
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
LEFT JOIN pg_catalog.pg_attribute a ON (c.oid = a.attrelid AND a.attnum > 0 AND NOT a.attisdropped)
LEFT JOIN pg_catalog.pg_stat_all_tables s ON (c.oid = s.relid)
WHERE c.relkind = 'v'
GROUP BY n.nspname,
c.relowner,
c.relkind,
c.relname,
s.n_live_tup,
c.oid
ORDER BY n.nspname,
c.relname
;