Impala - Alter Table

Instrukcja Alter table w Impali służy do wprowadzania zmian w danej tabeli. Za pomocą tej instrukcji możemy dodawać, usuwać lub modyfikować kolumny w istniejącej tabeli, a także zmieniać jej nazwę.

W tym rozdziale opisano różne typy instrukcji alter wraz ze składnią i przykładami. Najpierw załóżmy, że mamy tabelę o nazwiecustomers w my_db baza danych w Impali, z następującymi danymi

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

A jeśli otrzymasz listę tabel w bazie danych my_db, możesz znaleźć customers Tabela w nim, jak pokazano poniżej.

[quickstart.cloudera:21000] > show tables;

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

Zmiana nazwy tabeli

Składnia

Podstawowa składnia ALTER TABLE aby zmienić nazwę istniejącej tabeli jest następująca -

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

Przykład

Poniżej znajduje się przykład zmiany nazwy tabeli przy użyciu rozszerzenia alterkomunikat. Tutaj zmieniamy nazwę tabelicustomers użytkownikom.

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

Po wykonaniu powyższego zapytania Impala zmienia nazwę tabeli zgodnie z wymaganiami, wyświetlając następujący komunikat.

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

Możesz zweryfikować listę tabel w bieżącej bazie danych przy użyciu show tableskomunikat. Możesz znaleźć tabelę o nazwieusers zamiast customers.

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

Dodawanie kolumn do tabeli

Składnia

Podstawowa składnia ALTER TABLE aby dodać kolumny do istniejącej tabeli, wygląda to następująco -

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

Przykład

Poniższe zapytanie jest przykładem pokazującym, jak dodawać kolumny do istniejącej tabeli. Tutaj dodajemy dwie kolumny account_no i phone_number (obie są typu danych bigint) do plikuusers stół.

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

Po wykonaniu powyższego zapytania doda określone kolumny do tabeli o nazwie student, wyświetlając następujący komunikat.

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

Jeśli zweryfikujesz schemat tabeli users, możesz znaleźć nowo dodane kolumny, jak pokazano poniżej.

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

Usuwanie kolumn z tabeli

Składnia

Podstawowa składnia ALTER TABLE to DROP COLUMN w istniejącej tabeli wygląda następująco -

ALTER TABLE name DROP [COLUMN] column_name

Przykład

Poniższe zapytanie jest przykładem usuwania kolumn z istniejącej tabeli. Tutaj usuwamy kolumnę o nazwieaccount_no.

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

Wykonując powyższe zapytanie Impala usuwa kolumnę o nazwie account_no, wyświetlając następujący komunikat.

Query: alter TABLE users DROP account_no

Jeśli zweryfikujesz schemat tabeli users, nie możesz znaleźć kolumny o nazwie account_no ponieważ został usunięty.

[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

Zmiana nazwy i typu kolumny

Składnia

Podstawowa składnia ALTER TABLE to change the name and datatype kolumny w istniejącej tabeli wygląda następująco -

ALTER TABLE name CHANGE column_name new_name new_type

Przykład

Poniżej znajduje się przykład zmiany nazwy i typu danych kolumny za pomocą instrukcji alter. Tutaj zmieniamy nazwę kolumnyphone_no to email i jego typ danych na string.

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

Podczas wykonywania powyższego zapytania Impala dokonuje określonych zmian, wyświetlając następujący komunikat.

Query: alter TABLE users CHANGE phone_no e_mail string

Możesz zweryfikować metadane użytkowników tabeli przy użyciu describekomunikat. Możesz zauważyć, że Impala dokonał wymaganych zmian w określonej kolumnie.

[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

Zmiana tabeli za pomocą Hue

Otwórz edytor zapytań Impala i wpisz alter oświadczenie w nim i kliknij przycisk wykonaj, jak pokazano na poniższym zrzucie ekranu.

Po wykonaniu powyższego zapytania zmieni nazwę tabeli customers do users. W ten sam sposób możemy wykonać wszystkie plikialter zapytania.