Impala - Alter Table

La instrucción Alter table en Impala se utiliza para realizar cambios en una tabla determinada. Con esta declaración, podemos agregar, eliminar o modificar columnas en una tabla existente y también podemos cambiarle el nombre.

Este capítulo explica varios tipos de declaraciones alter con sintaxis y ejemplos. En primer lugar, suponga que tenemos una tabla llamadacustomers en el my_db base de datos en Impala, con los siguientes datos

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

Y, si obtiene la lista de tablas en la base de datos my_db, puedes encontrar el customers tabla en ella como se muestra a continuación.

[quickstart.cloudera:21000] > show tables;

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

Alterando el nombre de una mesa

Sintaxis

La sintaxis básica de ALTER TABLE para cambiar el nombre de una tabla existente es el siguiente:

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

Ejemplo

A continuación, se muestra un ejemplo de cómo cambiar el nombre de la tabla utilizando el alterdeclaración. Aquí estamos cambiando el nombre de la mesa.customers a los usuarios.

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

Después de ejecutar la consulta anterior, Impala cambia el nombre de la tabla según sea necesario, mostrando el siguiente mensaje.

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

Puede verificar la lista de tablas en la base de datos actual usando el show tablesdeclaración. Puedes encontrar la tabla llamadausers en vez de customers.

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

Agregar columnas a una tabla

Sintaxis

La sintaxis básica de ALTER TABLE para agregar columnas a una tabla existente es la siguiente:

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

Ejemplo

La siguiente consulta es un ejemplo que demuestra cómo agregar columnas a una tabla existente. Aquí estamos agregando dos columnas account_no y phone_number (ambas son del tipo de datos bigint) alusers mesa.

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

Al ejecutar la consulta anterior, agregará las columnas especificadas a la tabla llamada student, mostrando el siguiente mensaje.

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

Si verifica el esquema de la tabla users, puede encontrar las columnas recién agregadas como se muestra a continuación.

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

Quitar columnas de una tabla

Sintaxis

La sintaxis básica de ALTER TABLE para DROP COLUMN en una tabla existente es la siguiente:

ALTER TABLE name DROP [COLUMN] column_name

Ejemplo

La siguiente consulta es un ejemplo de cómo eliminar columnas de una tabla existente. Aquí estamos eliminando la columna llamadaaccount_no.

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

Al ejecutar la consulta anterior, Impala elimina la columna denominada account_no mostrando el siguiente mensaje.

Query: alter TABLE users DROP account_no

Si verifica el esquema de la tabla users, no puede encontrar la columna llamada account_no desde que fue eliminado.

[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

Cambiar el nombre y el tipo de una columna

Sintaxis

La sintaxis básica de ALTER TABLE para change the name and datatype de una columna en una tabla existente es la siguiente:

ALTER TABLE name CHANGE column_name new_name new_type

Ejemplo

A continuación se muestra un ejemplo de cómo cambiar el nombre y el tipo de datos de una columna mediante la instrucción alter. Aquí estamos cambiando el nombre de la columna.phone_no to email y su tipo de datos para string.

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

Al ejecutar la consulta anterior, Impala realiza los cambios especificados y muestra el siguiente mensaje.

Query: alter TABLE users CHANGE phone_no e_mail string

Puede verificar los metadatos de los usuarios de la tabla utilizando el describedeclaración. Puede observar que Impala ha realizado los cambios necesarios en la columna 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

Modificar una tabla usando Hue

Abra el editor de consultas Impala y escriba el alter declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Al ejecutar la consulta anterior, cambiará el nombre de la tabla customers a users. De la misma forma, podemos ejecutar todos losalter consultas.