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
Rimuove tutte le colonne esistenti da una tabella creata con LazySimpleSerDee 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
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, ...])
Parametri
- PARTITION (partition_col_name = partition_col_value [,...])
-
Specifica una partizione con le combinazioni nome/valore colonna specificate dall'utente. 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
-
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 datidate
. Per risolvere questo problema, utilizzare invece il tipo di datitimestamp
nella tabella. -
Anche se si sta sostituendo una sola colonna, la sintassi deve essere
ALTER TABLE
, 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 colonnetable-name
REPLACE COLUMNSnella documentazione di Apache.
Esempio
Nell'esempio seguente, la tabellanames_cities
, creata utilizzando LazySimpleSerDe, ha tre colonne denominate col1
col2
, ecol3
. Tutte le colonne sono di tipo string
. Per visualizzare le colonne nella tabella, il comando seguente utilizza l'istruzione SHOW COLUMNS.
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
ecity
. 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 nell'editor di query di Athena o eseguire la propria query SELECT
.