Оператор 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 и нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
При выполнении вышеупомянутого запроса он изменит имя таблицы клиентов на пользователей . Таким же образом мы можем выполнить все запросы на изменение .