728x90
SMALL
SELECT
info. TABLE_NAME,
info. COLUMN_NAME,
info.udt_name as type,
case when info.character_maximum_length is null then info.numeric_precision else info.character_maximum_length end as length,
info.column_default,
info.is_nullable,
comm.column_comment as comment,
case when pri_key.column_name is null then '' else 'PK' end as PK
FROM
information_schema. COLUMNS info
LEFT JOIN (
SELECT
PS.schemaname as SCHEMA_NAME,
PS.RELNAME AS TABLE_NAME,
PA.ATTNAME AS COLUMN_NAME,
PD.DESCRIPTION AS COLUMN_COMMENT
FROM
PG_STAT_ALL_TABLES PS,
PG_DESCRIPTION PD,
PG_ATTRIBUTE PA
WHERE
PS.RELID = PD.OBJOID
AND PD.OBJSUBID <> 0
AND PD.OBJOID = PA.ATTRELID
AND PD.OBJSUBID = PA.ATTNUM
ORDER BY
PS.RELNAME,
PD.OBJSUBID
) comm ON comm.SCHEMA_NAME = info.table_schema
AND comm. TABLE_NAME = info. TABLE_NAME
AND comm. COLUMN_NAME = info. COLUMN_NAME
LEFT JOIN (
SELECT
CC.*
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC,
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CC
WHERE
TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
AND TC.TABLE_CATALOG = CC.TABLE_CATALOG
AND TC.TABLE_SCHEMA = CC.TABLE_SCHEMA
AND TC.TABLE_NAME = CC.TABLE_NAME
AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
) pri_key ON pri_key.table_schema = info.table_schema
AND pri_key. table_name = info.TABLE_NAME
AND pri_key. column_name = info. COLUMN_NAME
WHERE
info.table_schema = 'public'
ORDER BY
info. TABLE_NAME,
info.ordinal_position;
728x90
LIST
'DB > Postgresql' 카테고리의 다른 글
postgresql DB에있는 모든 컬럼 조회 및 테이블별 정렬, 해당 테이블 컬럼조회 (0) | 2022.05.25 |
---|---|
[postgresql] null 체크하는 방법, null 데이터 문자열로 치환 - COALESCE 함수 (0) | 2022.05.24 |
해당문자열 다른문자열로 치환 update문 (0) | 2021.12.16 |
postgresql 실행중인 쿼리 확인, lock된 쿼리문 강제종류 (0) | 2021.12.02 |
[postgresql] case when true false 조건에 따라 출력하는법, 중복방지 글쓰기 (0) | 2021.11.15 |
댓글