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.