

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

Elimina todas las columnas existentes de una tabla creada con [LazySimpleSerDe](lazy-simple-serde.md) y las reemplaza con el conjunto de columnas especificado. Cuando se utiliza la sintaxis `PARTITION` opcional, actualiza los metadatos de la partición. También puede utilizar `ALTER TABLE REPLACE COLUMNS` para eliminar columnas al especificar solo las columnas que desea conservar.

## Sinopsis
<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, ...])
```

## Parameters
<a name="parameters"></a>

**PARTITION (partition\_col\_name = partition\_col\_value [,...])**  
Especifica una partición con las combinaciones de nombre y valor de columna que especifica. Escriba `partition_col_value` entre comillas solo si el tipo de datos de la columna es una cadena.

**REPLACE COLUMNS (col\_name data\_type [,col\_name data\_type,...])**  
Reemplaza las columnas existentes por los nombres de columna y los tipos de datos especificados.

## Notas
<a name="alter-table-replace-columns-notes"></a>
+ Para ver el cambio de las columnas de la tabla en el panel de navegación del Editor de consultas de Athena después de ejecutar `ALTER TABLE REPLACE COLUMNS`, es posible que tenga que actualizar manualmente la lista de tablas en el editor y volver a expandirla.
+ `ALTER TABLE REPLACE COLUMNS` no funciona para columnas con el tipo de datos `date`. Para solucionar este problema, utilice el tipo de datos `timestamp` en la tabla en su lugar.
+ Tenga en cuenta que, incluso si está reemplazando una sola columna, la sintaxis debe ser `ALTER TABLE {{table-name}} REPLACE COLUMNS`, con *columns* (columnas) en plural. Debe especificar no solo la columna que desea reemplazar, sino también las columnas que desea conservar; de lo contrario, se eliminarán las columnas que no especifique. Esta sintaxis y este comportamiento se derivan del DDL de Apache Hive. Como referencia, consulte [Agregar o reemplazar columnas](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Add/ReplaceColumns) en la documentación de Apache. 

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

En el siguiente ejemplo, la tabla `names_cities`, que se creó con [LazySimpleSerDe](lazy-simple-serde.md), tiene tres columnas denominadas `col1`, `col2` y `col3`. Todas las columnas son de tipo `string`. Para mostrar las columnas de la tabla, el siguiente comando utiliza la instrucción [SHOW COLUMNS](show-columns.md).

```
SHOW COLUMNS IN names_cities
```

Resultado de la consulta:

```
col1
col2
col3
```

El siguiente comando `ALTER TABLE REPLACE COLUMNS` reemplaza los nombres de las columnas por `first_name`, `last_name` y `city`. Los datos de origen subyacentes no se ven afectados.

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

Para probar el resultado, `SHOW COLUMNS` se ejecuta de nuevo.

```
SHOW COLUMNS IN names_cities
```

Resultado de la consulta:

```
first_name
last_name
city
```

Otra forma de mostrar los nuevos nombres de las columnas es [obtener una vista previa de la tabla](creating-tables-showing-table-information.md) en el Editor de consultas de Athena o ejecutar su propia consulta `SELECT`.