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.