본문 바로가기



PostgreSQL에서 모든 테이블과 해당 코멘트 정보 조회하기



PostgreSQL은 강력하고 오픈소스인 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 데이터베이스를 설계하고 운영하는 과정에서 테이블과 관련된 메타데이터 정보, 특히 테이블에 대한 설명을 담고 있는 코멘트 정보를 조회하는 것은 매우 중요합니다.
 
이러한 정보는 데이터베이스의 구조를 이해하고, 팀 내에서 또는 고객과의 소통에 있어서 매우 유용하게 사용될 수 있습니다. 본 글에서는 PostgreSQL에서 public 스키마 내의 모든 테이블과 각 테이블에 달린 코멘트 정보를 조회하는 방법을 소개합니다.

postgreSQL
SELECT 
    t.table_schema, -- 조회하고자 하는 테이블의 스키마 이름
    t.table_name, -- 조회하고자 하는 테이블의 이름
    obj_description((quote_ident(t.table_schema)||'.'||quote_ident(t.table_name))::regclass, 'pg_class') AS table_comment -- 테이블에 대한 코멘트 정보
FROM 
    information_schema.tables t -- 테이블의 기본 정보를 제공하는 information_schema.tables 뷰
LEFT JOIN 
    pg_catalog.pg_namespace n ON n.nspname = t.table_schema -- 스키마 정보를 제공하는 pg_namespace 테이블과 조인하여 정확한 스키마를 매칭
LEFT JOIN 
    pg_catalog.pg_class c ON c.relname = t.table_name AND c.relnamespace = n.oid -- 테이블 정보를 제공하는 pg_class 테이블과 조인. 스키마와 테이블 이름을 모두 고려하여 조인
WHERE 
    t.table_schema = 'public' -- 조회하고자 하는 스키마를 'public'으로 지정
    AND t.table_name LIKE '%%' -- 모든 테이블 이름에 대해 조회. '%'는 모든 문자열을 의미하는 와일드카드
    AND c.relkind = 'r'; -- 'r'은 일반 테이블을 나타냄. 이 조건은 pg_class에서 일반 테이블만을 대상으로 필터링

 
PostgreSQL에서 테이블에 대한 코멘트 정보를 조회하는 것은 데이터베이스의 설계 의도나 테이블의 용도를 문서화하는 데 매우 중요한 부분입니다. 특히, 대규모 데이터베이스에서는 수많은 테이블 사이에서 각 테이블의 역할과 중요성을 쉽게 파악할 수 있도록 도와줍니다.
 
테이블의 코멘트 정보를 포함하여 조회하기 위해서는 PostgreSQL의 내부 카탈로그와 시스템 함수를 활용해야 합니다. 특히, pg_description 시스템 카탈로그와 obj_description 함수를 사용하여 테이블의 OID(객체 식별자)에 해당하는 코멘트 정보를 얻을 수 있습니다.
 
이를 통해 데이터베이스 내의 모든 테이블에 대해 상세한 정보와 함께 해당 테이블의 설명을 조회할 수 있습니다.
 
데이터베이스의 효과적인 관리와 운영을 위해서는 테이블과 관련된 메타데이터, 특히 테이블 코멘트 정보의 중요성을 간과해서는 안 됩니다. 이 글을 통해 PostgreSQL에서 테이블 코멘트 정보를 쉽게 조회하는 방법을 배웠기를 바랍니다. 이 정보를 활용하여 보다 체계적이고 효율적인 데이터베이스 관리 전략을 수립하시길 바랍니다.