SELECT
c.table_name AS "테이블ID",
obj_description((format('%I.%I', c.table_schema, c.table_name))::regclass) AS "테이블명",
col_description((format('%I.%I', c.table_schema, c.table_name))::regclass, c.ordinal_position) AS "컬럼명",
c.column_name AS "컬럼ID",
CASE
WHEN c.data_type IN ('character varying', 'varchar', 'char')
THEN c.data_type || '(' || c.character_maximum_length::text || ')'
WHEN c.data_type = 'numeric' AND c.numeric_scale IS NOT NULL
THEN c.data_type || '(' || c.numeric_precision::text || ',' || c.numeric_scale::text || ')'
ELSE c.data_type
END AS "타입 및 길이",
CASE
WHEN c.is_nullable = 'YES' THEN 'NULL'
ELSE 'NOT NULL'
END AS "NULL",
--COALESCE(tc.constraint_type, 'No Constraint') AS "Constraint Type",
(CASE
WHEN EXISTS (SELECT 1 FROM information_schema.table_constraints AS tc_inner
WHERE tc_inner.table_schema = c.table_schema
AND tc_inner.table_name = c.table_name
AND tc_inner.constraint_type = 'PRIMARY KEY'
AND c.column_name = ANY (SELECT k.column_name
FROM information_schema.key_column_usage AS k
WHERE k.constraint_name = tc_inner.constraint_name
AND k.table_schema = tc_inner.table_schema
AND k.table_name = tc_inner.table_name))
THEN 'Yes'
ELSE 'No'
END) AS "PK",
(CASE
WHEN EXISTS (SELECT 1 FROM information_schema.table_constraints AS tc_inner
WHERE tc_inner.table_schema = c.table_schema
AND tc_inner.table_name = c.table_name
AND tc_inner.constraint_type = 'FOREIGN KEY'
AND c.column_name = ANY (SELECT k.column_name
FROM information_schema.key_column_usage AS k
WHERE k.constraint_name = tc_inner.constraint_name
AND k.table_schema = tc_inner.table_schema
AND k.table_name = tc_inner.table_name))
THEN 'Yes'
ELSE 'No'
END) AS "FK"
FROM
information_schema.columns c
LEFT JOIN
information_schema.table_constraints tc
ON
c.table_schema = tc.table_schema
AND c.table_name = tc.table_name
AND c.column_name = ANY (SELECT k.column_name
FROM information_schema.key_column_usage AS k
WHERE k.constraint_name = tc.constraint_name
AND k.table_schema = tc.table_schema
AND k.table_name = tc.table_name)
WHERE
c.table_schema = '스키마명' -- Specify your schema
ORDER BY
c.table_name, c.ordinal_position;
자동 생성 엑셀 다운로드 : https://blog.naver.com/acrodev/222227877437
[Oracle] SQL과 엑셀 매크로를 이용한 테이블 정의서(설계서) 만들기
제일 노가다 작업 중의 하나가 테이블 정의서 만드는 작업이라는 막내의 푸념에... 좋은 방법이 있겠지 하...
blog.naver.com
'DBA > Postgresql' 카테고리의 다른 글
| pg_hint_plan (0) | 2024.09.03 |
|---|---|
| 유휴 세션 정리 (0) | 2024.08.28 |
| orafce 설치 및 적용 (0) | 2024.07.29 |
| DB간 테이블 복제(실시간) (0) | 2024.07.26 |
| pg_stat_statements 활용(통계 정보) (0) | 2024.07.26 |