PG_TABLE_DEF - Amazon Redshift

PG_TABLE_DEF

테이블 열에 대한 정보를 저장합니다.

PG_TABLE_DEF는 사용자에게 공개되는 테이블에 대한 정보만 반환합니다. PG_TABLE_DEF가 예상한 결과를 반환하지 않을 때는 search_path 파라미터가 관련 스키마를 포함하여 올바로 설정되어 있는지 확인하십시오.

그 밖에 데이터 분산 스큐, 키 분산 스큐, 테이블 크기, 통계 등 테이블에 대해 더욱 포괄적인 정보를 확인하려면 SVV_TABLE_INFO를 사용하면 됩니다.

테이블 열

열 명칭 데이터 유형 설명
schemaname name 스키마 이름
tablename name 테이블 이름.
column name 열 이름.
type 텍스트 열의 데이터 형식입니다.
인코딩 character(32) 열의 인코딩입니다.
distkey boolean 이 열이 테이블의 분산 키일 경우 true입니다.
sortkey 정수 정렬 키의 열 순서입니다. 테이블이 복합 정렬 키를 사용하는 경우에는 정렬 키에 포함된 모든 열이 양의 값으로 정렬 키에서 자신의 위치를 나타냅니다. 테이블이 인터리브 정렬 키를 사용하는 경우에는 정렬 키에 포함된 각 열이 각각 양의 값이나 음의 값을 갖습니다. 이때는 절대 값이 정렬 키에서 열의 위치를 나타냅니다. 값이 0이면 정렬 키에 포함되지 않는 열입니다.
notnull boolean 열에 NOT NULL 제약 조건이 있으면 true입니다.

다음은 LINEORDER_COMPOUND 테이블에서 복합 정렬 키 열을 나타내는 예입니다.

select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_compound' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | 1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | 3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | 5 | true (5 rows)

다음은 LINEORDER_INTERLEAVED 테이블에서 인터리브 정렬 키 열을 나타내는 예입니다.

select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_interleaved' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | -1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | -3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | -5 | true (5 rows)

PG_TABLE_DEF는 스키마에서 검색 경로에 포함된 테이블 정보만 반환합니다. 자세한 내용은 search_path 단원을 참조하십시오.

예를 들어 새로운 스키마와 테이블을 생성한 후에 PG_TABLE_DEF에 대한 쿼리를 실행한다고 가정하겠습니다.

create schema demo; create table demo.demotable (one int); select * from pg_table_def where tablename = 'demotable'; schemaname|tablename|column| type | encoding | distkey | sortkey | notnull ----------+---------+------+------+----------+---------+---------+--------

다음 쿼리는 새로운 테이블에 대해서 아무런 행도 반환하지 않습니다. 이때는 search_path 설정을 검사하십시오.

show search_path; search_path --------------- $user, public (1 row)

demo 스키마를 검색 경로에 추가한 후 쿼리를 다시 실행합니다.

set search_path to '$user', 'public', 'demo'; select * from pg_table_def where tablename = 'demotable'; schemaname| tablename |column| type | encoding |distkey|sortkey| notnull ----------+-----------+------+---------+----------+-------+-------+-------- demo | demotable | one | integer | none | f | 0 | f (1 row)