

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Rimuove tutte le colonne esistenti da una tabella creata con [LazySimpleSerDe](lazy-simple-serde.md)e le sostituisce con il set di colonne specificato. Quando si utilizza la sintassi `PARTITION` facoltativa, aggiorna i metadati della partizione. È possibile utilizzare anche `ALTER TABLE REPLACE COLUMNS` per eliminare le colonne specificando solo le colonne che si desidera mantenere.

## Riepilogo
<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 [,...])**  
Specifica una partizione con le name/value combinazioni di colonne specificate. Racchiudere `partition_col_value` tra virgolette solo se il tipo di dati della colonna è una stringa.

**REPLACE COLUMNS (col\_name data\_type [,col\_name data\_type,…])**  
Sostituisce le colonne esistenti con i nomi delle colonne e i tipi di dati specificati.

## Note
<a name="alter-table-replace-columns-notes"></a>
+ Per visualizzare la modifica nelle colonne della tabella nel pannello di navigazione dell'editor di query Athena dopo l'esecuzione di `ALTER TABLE REPLACE COLUMNS`, potrebbe essere necessario aggiornare manualmente l'elenco di tabelle nell'editor e quindi espandere nuovamente la tabella.
+ `ALTER TABLE REPLACE COLUMNS` non funziona per le colonne con il tipo di dati `date`. Per risolvere questo problema, utilizzare invece il tipo di dati `timestamp` nella tabella.
+ Anche se si sta sostituendo una sola colonna, la sintassi deve essere `ALTER TABLE {{table-name}} REPLACE COLUMNS`, con *colonne* al plurale. È necessario specificare non solo la colonna che si desidera sostituire, ma anche le colonne che si desidera conservare. In caso contrario, le colonne non specificate verranno eliminate. Questa sintassi e questo comportamento derivano da Apache Hive DDL. Come riferimento, consulta [Aggiungi/sostituisci colonne](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Add/ReplaceColumns) nella documentazione di Apache. 

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

Nell'esempio seguente, la tabella`names_cities`, creata utilizzando [LazySimpleSerDe](lazy-simple-serde.md), ha tre colonne denominate `col1``col2`, e. `col3` Tutte le colonne sono di tipo `string`. Per visualizzare le colonne nella tabella, il comando seguente utilizza l'istruzione [SHOW COLUMNS](show-columns.md).

```
SHOW COLUMNS IN names_cities
```

Risultato della query:

```
col1
col2
col3
```

Il comando `ALTER TABLE REPLACE COLUMNS` di seguito riportato sostituisce i nomi delle colonne con `first_name`, `last_name` e`city`. I dati di origine sottostanti non sono interessati.

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

Per testare il risultato, `SHOW COLUMNS` viene eseguito nuovamente.

```
SHOW COLUMNS IN names_cities
```

Risultato della query:

```
first_name
last_name
city
```

Un altro modo per mostrare i nuovi nomi di colonna è quello di [visualizzare in anteprima la tabella](creating-tables-showing-table-information.md) nell'editor di query di Athena o eseguire la propria query `SELECT`.