

# ALTER TABLE REPLACE COLUMNS
<a name="alter-table-replace-columns"></a>

[LazySimpleSerDe](lazy-simple-serde.md)로 생성된 테이블에서 모든 열을 제거하고 지정된 열 집합으로 대체합니다. 선택적 `PARTITION` 구문을 사용할 때 파티션 메타데이터를 업데이트합니다. `ALTER TABLE REPLACE COLUMNS`를 사용하여 유지하려는 열만 지정해 열을 삭제할 수도 있습니다.

## 시놉시스
<a name="synopsis"></a>

```
ALTER TABLE table_name 
  [PARTITION 
   (partition_col1_name = partition_col1_value
   [,partition_col2_name = partition_col2_value][,...])]
  REPLACE COLUMNS (col_name data_type [, col_name data_type, ...])
```

## 파라미터
<a name="parameters"></a>

**PARTITION (partition\$1col\$1name = partition\$1col\$1value [,...])**  
지정한 열 이름/값 조합으로 파티션을 지정합니다. 열의 데이터 형식이 문자열인 경우에만 인용 부호로 `partition_col_value`를 묶습니다.

**REPLACE COLUMNS (col\$1name data\$1type [,col\$1name data\$1type,...])**  
기존 열을 지정된 열 이름 및 데이터 유형으로 바꿉니다.

## 참고
<a name="alter-table-replace-columns-notes"></a>
+ `ALTER TABLE REPLACE COLUMNS` 실행 후 Athena 쿼리 편집기 탐색 창에서 테이블 열의 변경을 확인하려면 편집기의 테이블 목록을 수동으로 새로 고친 다음 테이블을 다시 확장해야 할 수 있습니다.
+ `ALTER TABLE REPLACE COLUMNS`는 `date` 데이터 형식을 가진 열에 대해 작동하지 않습니다. 이 문제를 해결하려면 테이블에서 `timestamp` 데이터 형식을 대신 사용하세요.
+ 단 하나의 열만 바꾸는 경우에도 구문은 `ALTER TABLE table-name REPLACE COLUMNS`와 같이 *columns*가 복수형이어야 합니다. 바꾸려는 열뿐만 아니라 유지하려는 열도 지정해야 합니다. 그렇지 않으면 지정하지 않은 열이 삭제됩니다. 이 구문과 동작은 Apache Hive DDL에서 파생됩니다. Apache 설명서에서 [열 추가/바꾸기](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Add/ReplaceColumns)를 참조하세요.

## 예제
<a name="alter-table-replace-columns-example"></a>

다음 예에서 [LazySimpleSerDe](lazy-simple-serde.md)를 사용하여 만든 테이블 `names_cities`에는 `col1`, `col2` 및 `col3`이라는 세 개의 열이 있습니다. 모든 열은 `string` 형식입니다. 테이블의 열을 표시하기 위해 다음 명령에서는 [SHOW COLUMNS](show-columns.md) 문을 사용합니다.

```
SHOW COLUMNS IN names_cities
```

쿼리의 결과:

```
col1
col2
col3
```

다음 `ALTER TABLE REPLACE COLUMNS` 명령은 열 이름을 `first_name`, `last_name` 및 `city`로 바꿉니다. 기본 소스 데이터는 영향을 받지 않습니다.

```
ALTER TABLE names_cities
REPLACE COLUMNS (first_name string, last_name string, city string)
```

결과를 테스트하기 위해 `SHOW COLUMNS`를 다시 실행합니다.

```
SHOW COLUMNS IN names_cities
```

쿼리의 결과:

```
first_name
last_name
city
```

새 열 이름을 표시하는 또 다른 방법은 Athena 쿼리 편집기에서 [표를 미리 보거나](creating-tables-showing-table-information.md) 자체 `SELECT` 쿼리를 실행하는 것입니다.