Impala - Alterar Mesa

A instrução Alter table no Impala é usada para realizar alterações em uma determinada tabela. Usando essa instrução, podemos adicionar, excluir ou modificar colunas em uma tabela existente e também podemos renomeá-la.

Este capítulo explica vários tipos de instruções alter com sintaxe e exemplos. Em primeiro lugar, suponha que temos uma tabela chamadacustomers no my_db banco de dados no Impala, com os seguintes dados

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

E, se você obtiver a lista de tabelas no banco de dados my_db, você pode encontrar o customers tabela como mostrado abaixo.

[quickstart.cloudera:21000] > show tables;

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

Alterar o nome de uma mesa

Sintaxe

A sintaxe básica de ALTER TABLE renomear uma tabela existente é o seguinte -

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

Exemplo

A seguir está um exemplo de alteração do nome da tabela usando o alterdeclaração. Aqui estamos mudando o nome da mesacustomers para os usuários.

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

Após executar a consulta acima, o Impala altera o nome da tabela conforme necessário, exibindo a seguinte mensagem.

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

Você pode verificar a lista de tabelas no banco de dados atual usando o show tablesdeclaração. Você pode encontrar a mesa chamadausers ao invés de customers.

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

Adicionando colunas a uma tabela

Sintaxe

A sintaxe básica de ALTER TABLE adicionar colunas a uma tabela existente é o seguinte -

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

Exemplo

A consulta a seguir é um exemplo que demonstra como adicionar colunas a uma tabela existente. Aqui, estamos adicionando duas colunas account_no e phone_number (ambos são do tipo de dados bigint) aousers mesa.

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

Ao executar a consulta acima, ele adicionará as colunas especificadas à tabela chamada student, exibindo a seguinte mensagem.

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

Se você verificar o esquema da tabela users, você pode encontrar as colunas recém-adicionadas conforme mostrado abaixo.

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

Eliminando colunas de uma tabela

Sintaxe

A sintaxe básica de ALTER TABLE para DROP COLUMN em uma tabela existente é o seguinte -

ALTER TABLE name DROP [COLUMN] column_name

Exemplo

A consulta a seguir é um exemplo de exclusão de colunas de uma tabela existente. Aqui estamos excluindo a coluna chamadaaccount_no.

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

Ao executar a consulta acima, o Impala exclui a coluna chamada account_no exibindo a seguinte mensagem.

Query: alter TABLE users DROP account_no

Se você verificar o esquema da tabela users, você não pode encontrar a coluna chamada account_no desde que foi excluído.

[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

Alterar o nome e o tipo de uma coluna

Sintaxe

A sintaxe básica de ALTER TABLE para change the name and datatype de uma coluna em uma tabela existente é a seguinte -

ALTER TABLE name CHANGE column_name new_name new_type

Exemplo

A seguir está um exemplo de alteração do nome e tipo de dados de uma coluna usando a instrução alter. Aqui estamos mudando o nome da colunaphone_no to email e seu tipo de dados para string.

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

Ao executar a consulta acima, o Impala faz as alterações especificadas, exibindo a seguinte mensagem.

Query: alter TABLE users CHANGE phone_no e_mail string

Você pode verificar os metadados dos usuários da tabela usando o describedeclaração. Você pode observar que o Impala fez as alterações necessárias na coluna especificada.

[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

Alterando uma Tabela usando Hue

Abra o editor de consulta Impala e digite o alter declaração nele e clique no botão executar conforme mostrado na imagem a seguir.

Ao executar a consulta acima, mudará o nome da tabela customers para users. Da mesma forma, podemos executar todas asalter consultas.