

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# PG\_TABLE\_DEF
<a name="r_PG_TABLE_DEF"></a>

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

PG\_TABLE\_DEF는 사용자에게 공개되는 테이블에 대한 정보만 반환합니다. PG\_TABLE\_DEF가 예상한 결과를 반환하지 않을 때는 [search\_path](r_search_path.md) 파라미터가 관련 스키마를 포함하여 올바로 설정되어 있는지 확인하세요.

그 밖에 데이터 분산 스큐, 키 분산 스큐, 테이블 크기, 통계 등 테이블에 대해 더욱 포괄적인 정보를 확인하려면 [SVV\_TABLE\_INFO](r_SVV_TABLE_INFO.md)를 사용하면 됩니다.

## 테이블 열
<a name="r_PG_TABLE_DEF-table-columns2"></a>


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

## 예제
<a name="r_PG_TABLE_DEF-example2"></a>

다음은 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](r_search_path.md) 섹션을 참조하세요.

예를 들어 새로운 스키마와 테이블을 생성한 후에 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)
```