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.