Импала - Изменить стол

Оператор Alter table в Impala используется для внесения изменений в данную таблицу. Используя этот оператор, мы можем добавлять, удалять или изменять столбцы в существующей таблице, а также переименовывать ее.

В этой главе объясняются различные типы операторов alter с синтаксисом и примерами. Прежде всего предположим, что у нас есть таблица с именемcustomers в my_db база данных в Impala со следующими данными

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

И, если вы получите список таблиц в базе данных my_db, вы можете найти customers таблицу в нем, как показано ниже.

[quickstart.cloudera:21000] > show tables;

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

Изменение имени таблицы

Синтаксис

Базовый синтаксис ALTER TABLE переименовать существующую таблицу следующим образом -

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

пример

Ниже приведен пример изменения имени таблицы с помощью alterзаявление. Здесь мы меняем название таблицыcustomers пользователям.

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

После выполнения вышеуказанного запроса Impala изменяет имя таблицы по мере необходимости, отображая следующее сообщение.

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

Вы можете проверить список таблиц в текущей базе данных, используя show tablesзаявление. Вы можете найти таблицу с именемusers вместо customers.

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

Добавление столбцов в таблицу

Синтаксис

Базовый синтаксис ALTER TABLE добавить столбцы в существующую таблицу следующим образом:

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

пример

Следующий запрос - это пример, демонстрирующий, как добавить столбцы в существующую таблицу. Здесь мы добавляем два столбца account_no и phone_number (оба имеют тип данных bigint) вusers стол.

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

При выполнении вышеуказанного запроса он добавит указанные столбцы в таблицу с именем student, отображая следующее сообщение.

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

Если вы проверите схему таблицы users, вы можете найти в нем только что добавленные столбцы, как показано ниже.

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

Удаление столбцов из таблицы

Синтаксис

Базовый синтаксис ALTER TABLE to DROP COLUMN в существующей таблице выглядит следующим образом -

ALTER TABLE name DROP [COLUMN] column_name

пример

Следующий запрос является примером удаления столбцов из существующей таблицы. Здесь мы удаляем столбец с именемaccount_no.

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

При выполнении вышеуказанного запроса Impala удаляет столбец с именем account_no, отображающий следующее сообщение.

Query: alter TABLE users DROP account_no

Если вы проверите схему таблицы users, вы не можете найти столбец с именем account_no так как он был удален.

[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

Изменение названия и типа столбца

Синтаксис

Базовый синтаксис ALTER TABLE to change the name and datatype столбца в существующей таблице выглядит следующим образом -

ALTER TABLE name CHANGE column_name new_name new_type

пример

Ниже приведен пример изменения имени и типа данных столбца с помощью оператора alter. Здесь мы меняем название столбцаphone_no to email и его тип данных для string.

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

При выполнении вышеуказанного запроса Impala вносит указанные изменения, отображая следующее сообщение.

Query: alter TABLE users CHANGE phone_no e_mail string

Вы можете проверить метаданные пользователей таблицы, используя describeзаявление. Вы можете заметить, что Impala внесла необходимые изменения в указанный столбец.

[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

Изменение таблицы с помощью оттенка

Откройте редактор запросов Impala и введите alter в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.

При выполнении вышеуказанного запроса имя таблицы изменится. customers к users. Таким же образом мы можем выполнить всеalter запросы.