-------------------------------------------------
---.PostgreSQL. 테이블 및 컬럼정보 조회
--------------------------------------------------
SELECT
tbl.schemaname 스키마명
, tbl.relname 테이블id
, tbl_dec.description 테이블명
, col.attname 컬럼명
, col.attnum 컬럼순서
, col_dec.description 컬럼설명
, col_att.data_type data_type
, col_att.character_maximum_length max_len
, col_att.is_nullable null여부
, col_att.column_default default값
, col_att.numeric_precision num_len
, col_att.datetime_precision data_time
FROM
(
SELECT
*
FROM
PG_STAT_USER_TABLES --- 사용자 테이블
WHERE
1 = 1
AND relname = '테이블id'
AND schemaname = '스키마이름') tbl
LEFT JOIN PG_DESCRIPTION tbl_dec --- 테이블 정보
ON
tbl_dec.objsubid = 0
AND tbl.relid = tbl_dec.objoid
LEFT JOIN PG_ATTRIBUTE col --- 컬럼
ON
tbl.relid = col.ATTRELID
LEFT JOIN PG_DESCRIPTION col_dec --- 컬럼 정보
ON
col_dec.objsubid <> 0
AND col_dec.objoid = tbl.relid
AND col_dec.objoid = col.attrelid
AND col_dec.objsubid = col.attnum
LEFT JOIN INFORMATION_SCHEMA.COLUMNS col_att --- data_type 정보
ON
col_att.table_schema = tbl.schemaname
AND col_att.table_name = tbl.relname
AND col_att.column_name = col.attname
AND col_att.ordinal_position = col.attnum
WHERE
1 = 1
AND col.attstattarget = '-1'
ORDER BY
tbl.relname, col.attnum;
INFORMATION_SCHEMA.COLUMNS : columns에는 데이터베이스의 모든 테이블 열에 대한 정보가 포함.
table_catalog | 데이터베이스 이름 |
table_schema | 스키마 이름 |
table_name | 테이블 이름 |
column_name | 열 이름 |
ordinal_position | 테이블 내 열의 서수 |
column_default | 열의 기본 표현식 |
is_nullable | Null 허용 여부 |
data_type | 데이터 타입. |
character_maximum_length | data_type이 문자 또는 비트 문자열 때, 최대 길이 |
character_octet_length | data_type문자 일때, 데이터의 가능한 최대 길이(바이트). |
numeric_precision | 테이터 타입이 숫자일 경우 정밀도. |
numeric_precision_radix | data_type이 숫자일경우 data_type숫자 유형을 식별하는 경우 이 열은 열의 값을 기준으로 표시 numeric_precision하고 numeric_scale표현합니다. 값은 2 또는 10입니다. |
numeric_scale | data_type이 숫자일경우 소수점 오른쪽의 유효 자릿수를 나타냄 10진법(10진법) 또는 2진법(2진법)으로 표현할 수 있음. |
datetime_precision | data_type이 날짜, 시간, 타임스탬프 인 경우 사용. |
interval_type | 경우 data_type식별하는 간격 유형이 열은 간격이 열의 포함 필드 명세를 포함하고 예를 들어 YEAR TO MONTH, DAY TO SECOND등 어떠한 필드 제한이 지정되지 않은 경우 (즉, 간격은 모든 필드를 수용), 및 다른 데이터 타입, 이 필드는 null입니다. |
interval_precision | |
character_set_catalog | |
character_set_schema | |
character_set_name | |
collation_catalog | 열의 데이터 정렬을 포함하는 데이터베이스의 이름(항상 현재 데이터베이스), 기본값 또는 열의 데이터 유형이 데이터 형식을 조합할 수 없는 경우 null |
collation_schema | 열의 데이터 정렬을 포함하는 스키마의 이름입니다. 기본값이거나 열의 데이터 유형이 데이터 형식이 아닌 경우 null입니다. |
collation_name | 열의 데이터 정렬 이름, 기본값인 경우 null 또는 열의 데이터 유형이 데이터 정렬 가능하지 않은 경우 |
domain_catalog | 열에 도메인 유형이 있는 경우 도메인이 정의된 데이터베이스의 이름(항상 현재 데이터베이스), 그렇지 않으면 null입니다. |
domain_schema | 열에 도메인 유형이 있는 경우 도메인이 정의된 스키마의 이름, 그렇지 않으면 null입니다. |
domain_name | 열에 도메인 유형이 있으면 도메인 이름이고 그렇지 않으면 null입니다. |
udt_catalog | 열 데이터 유형(해당되는 경우 도메인의 기본 유형)이 정의된 데이터베이스의 이름(항상 현재 데이터베이스) |
udt_schema | 열 데이터 유형(해당되는 경우 도메인의 기본 유형)이 정의된 스키마의 이름 |
udt_name | 열 데이터 유형의 이름(해당되는 경우 도메인의 기본 유형) |
scope_catalog | |
scope_schema | |
scope_name | |
maximum_cardinality | default : Null |
dtd_identifier | 테이블에 속한 데이터 유형 설명자 중에서 고유한 열의 데이터 유형 설명자의 식별자입니다. 이는 이러한 식별자의 다른 인스턴스와 결합하는 데 주로 유용합니다. (식별자의 특정 형식은 정의되지 않았으며 향후 버전에서도 동일하게 유지되지 않을 수 있습니다.) |
is_self_referencing | PostgreSQL 에서 사용할 수 없는 기능에 적용됩니다. |
is_identity | 열이 ID 열이면 YES, else NO. |
identity_generation | 열이 ID 열인 경우 열의 정의를 반영하는 ALWAYS또는 BY DEFAULT입니다. |
identity_start | 열이 식별 열이면 내부 시퀀스의 시작 값이고 그렇지 않으면 null입니다. |
identity_increment | 열이 ID 열이면 내부 시퀀스의 증분이고 그렇지 않으면 null입니다. |
identity_maximum | 열이 식별 열이면 내부 시퀀스의 최대값이고 그렇지 않으면 null입니다. |
identity_minimum | 열이 식별 열이면 내부 시퀀스의 최소값이고 그렇지 않으면 null입니다. |
identity_cycle | 열이 식별 열 YES이면 내부 시퀀스가 순환하거나 순환 NO하지 않는 경우입니다. 그렇지 않으면 null입니다. |
is_generated | |
generation_expression | |
is_updatable | 업데이트 가능 여부 |
'PostgreSQL' 카테고리의 다른 글
Postgresql. DataBase / Table size 확인 (0) | 2021.10.14 |
---|---|
PostgreSQL 테이블 & 컬럼 & INDEX 정보 한번에 조회 (0) | 2021.08.23 |
PostgreSQL Index 조회 (0) | 2021.08.23 |
PostgreSQL_사용자 테이블 정보 조회 (0) | 2021.08.18 |
PostgreSQL_System Views, System Catalogs Table (0) | 2021.08.18 |
PostgreSQL 스키마, 테이블 정보 조회 (0) | 2021.08.18 |
댓글