Impala - Alter Table

L'istruzione Alter table in Impala viene utilizzata per eseguire modifiche su una determinata tabella. Usando questa istruzione, possiamo aggiungere, eliminare o modificare colonne in una tabella esistente e possiamo anche rinominarla.

Questo capitolo spiega vari tipi di istruzioni alter con sintassi ed esempi. Prima di tutto supponiamo di avere una tabella denominatacustomers nel my_db database in Impala, con i seguenti dati

ID   NAME     AGE   ADDRESS    SALARY
--- --------- ----- ----------- --------
1   Ramesh    32    Ahmedabad   20000
2   Khilan    25    Delhi       15000
3   Hardik    27    Bhopal      40000
4   Chaitali  25    Mumbai      35000
5   kaushik   23    Kota        30000
6   Komal     22    Mp          32000

E, se ottieni l'elenco delle tabelle nel database my_db, puoi trovare il file customers tabella in esso come mostrato di seguito.

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| student   | 
| student1  | 
+-----------+

Modificare il nome di una tabella

Sintassi

La sintassi di base di ALTER TABLE per rinominare una tabella esistente è il seguente:

ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name

Esempio

Di seguito è riportato un esempio di modifica del nome della tabella utilizzando l'estensione alterdichiarazione. Qui stiamo cambiando il nome della tabellacustomers agli utenti.

[quickstart.cloudera:21000] > ALTER TABLE my_db.customers RENAME TO my_db.users;

Dopo aver eseguito la query precedente, Impala cambia il nome della tabella come richiesto, visualizzando il seguente messaggio.

Query: alter TABLE my_db.customers RENAME TO my_db.users

È possibile verificare l'elenco delle tabelle nel database corrente utilizzando il show tablesdichiarazione. Puoi trovare la tabella denominatausers invece di customers.

Query: show tables 
+----------+ 
| name     | 
+----------+ 
| employee | 
| student  | 
| student1 | 
| users    | 
+----------+ 
Fetched 4 row(s) in 0.10s

Aggiunta di colonne a una tabella

Sintassi

La sintassi di base di ALTER TABLE per aggiungere colonne a una tabella esistente è il seguente:

ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])

Esempio

La seguente query è un esempio che dimostra come aggiungere colonne a una tabella esistente. Qui stiamo aggiungendo due colonne account_no e phone_number (entrambe sono di tipo bigint) al fileusers tavolo.

[quickstart.cloudera:21000] > ALTER TABLE users ADD COLUMNS (account_no BIGINT, 
phone_no BIGINT);

Eseguendo la query precedente, aggiungerà le colonne specificate alla tabella denominata student, visualizzando il seguente messaggio.

Query: alter TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT)

Se verifichi lo schema della tabella users, puoi trovare le colonne appena aggiunte come mostrato di seguito.

quickstart.cloudera:21000] > describe users;
 
Query: describe users 
+------------+--------+---------+ 
| name       | type   | comment | 
+------------+--------+---------+ 
| id         | int    |         | 
| name       | string |         | 
| age        | int    |         |
| address    | string |         | 
| salary     | bigint |         | 
| account_no | bigint |         | 
| phone_no   | bigint |         | 
+------------+--------+---------+ 
Fetched 7 row(s) in 0.20s

Eliminazione di colonne da una tabella

Sintassi

La sintassi di base di ALTER TABLE su DROP COLUMN in una tabella esistente è la seguente:

ALTER TABLE name DROP [COLUMN] column_name

Esempio

La seguente query è un esempio di eliminazione di colonne da una tabella esistente. Qui stiamo eliminando la colonna denominataaccount_no.

[quickstart.cloudera:21000] > ALTER TABLE users DROP account_no;

Eseguendo la query di cui sopra, Impala cancella la colonna denominata account_no visualizzando il seguente messaggio.

Query: alter TABLE users DROP account_no

Se verifichi lo schema della tabella users, non riesci a trovare la colonna denominata account_no da quando è stato cancellato.

[quickstart.cloudera:21000] > describe users; 

Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

Modifica del nome e del tipo di una colonna

Sintassi

La sintassi di base di ALTER TABLE su change the name and datatype di una colonna in una tabella esistente è la seguente:

ALTER TABLE name CHANGE column_name new_name new_type

Esempio

Di seguito è riportato un esempio di modifica del nome e del tipo di dati di una colonna utilizzando l'istruzione alter. Qui stiamo cambiando il nome della colonnaphone_no to email e il suo tipo di dati a string.

[quickstart.cloudera:21000] > ALTER TABLE users CHANGE phone_no e_mail string;

Eseguendo la query precedente, Impala esegue le modifiche specificate, visualizzando il seguente messaggio.

Query: alter TABLE users CHANGE phone_no e_mail string

È possibile verificare i metadati degli utenti della tabella utilizzando il file describedichiarazione. È possibile osservare che Impala ha apportato le modifiche richieste alla colonna specificata.

[quickstart.cloudera:21000] > describe users; 
Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

Modifica di una tabella utilizzando la tonalità

Apri l'editor di query di Impala e digita alter dichiarazione in esso e fare clic sul pulsante di esecuzione come mostrato nella seguente schermata.

Quando si esegue la query precedente, cambierà il nome della tabella customers per users. Allo stesso modo, possiamo eseguire tutti i filealter interrogazioni.