Учебники

Импала — Альтер Стол

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

Эта глава объясняет различные типы операторов alter с помощью синтаксиса и примеров. Прежде всего предположим, что у нас есть таблица с именем customer в базе данных 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 , вы можете найти в нем таблицу клиентов, как показано ниже.

[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 . Здесь мы меняем название таблицы клиентов на пользователей.

[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 . Вы можете найти таблицу с именем пользователи вместо клиентов .

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) в таблицу пользователей .

[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)

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

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

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

 [quickstart.cloudera: 21000]> опишите пользователей; 

 Запрос: опишите пользователей 
 + ---------- + -------- + --------- + 
 |  имя |  тип |  комментарий | 
 + ---------- + -------- + --------- + 
 |  id |  int |  | 
 |  имя |  строка |  | 
 |  возраст |  int |  | 
 |  адрес |  строка |  | 
 |  зарплата |  bigint |  | 
 |  номер телефона |  bigint |  |
 + ---------- + -------- + --------- + 
 Получено 6 ряд (ов) за 0.11s

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

Синтаксис

Основной синтаксис ALTER TABLE для изменения имени и типа данных столбца в существующей таблице выглядит следующим образом:

ALTER TABLE name CHANGE column_name new_name new_type

пример

Ниже приведен пример изменения имени и типа данных столбца с помощью оператора alter. Здесь мы меняем имя столбца phone_no на 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

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

[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 и нажмите кнопку «Выполнить», как показано на следующем снимке экрана.

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

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