Impala – Alter Table

La instrucción Alter table de Impala se utiliza para realizar cambios en una tabla determinada. Con este operador, podemos agregar, eliminar o modificar columnas en una tabla existente, así como cambiarle el nombre.

Este capítulo explica los diferentes tipos de declaraciones alter con sintaxis y ejemplos. En primer lugar, supongamos que tenemos una tabla llamada clientela en 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 una lista de tablas en la base de datos my_db, puedes encontrar clientela tabla en ella como se muestra a continuación.

[quickstart.cloudera:21000] > show tables;

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

Cambiar el nombre de la tabla

Sintaxis

Sintaxis básica CAMBIAR TABLA cambie el nombre de la tabla existente de la siguiente manera:

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 con cambio declaración. Aquí cambiamos el nombre de la mesa clientela 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 consultar la lista de tablas en la base de datos actual usando mostrar tablas declaración. Puedes encontrar una tabla llamada usuarios en lugar de clientela

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

Agregar columnas a una tabla

Sintaxis

Sintaxis básica CAMBIAR TABLA agregue columnas a la tabla existente como esta:

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í agregamos dos columnas account_no y phone_number (ambas son de tipo de datos bigint) a usuarios 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 aprendiz, mostrando el siguiente mensaje.

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

Si revisa el esquema de la tabla usuarios, puede encontrar las columnas que acaba de agregar 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

Eliminar columnas de una tabla

Sintaxis

Sintaxis básica para ALTER TABLE para COLUMNA DE EXENCIÓN DE RESPONSABILIDAD en la tabla existente se ve así:

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 llamada account_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 revisa el esquema de la tabla usuarios, 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

Sintaxis básica para ALTER TABLE para cambiar el nombre y el tipo de datos una columna en una tabla existente se ve así:

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í cambiamos el nombre de la columna phone_no al correo electrónico y su tipo de datos para un hilo

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

Cuando se ejecuta la consulta anterior, Impala realiza los cambios especificados mostrando el siguiente mensaje

Query: alter TABLE users CHANGE phone_no e_mail string

Puede verificar los metadatos de los usuarios de la tabla usando describir declaración. Puede notar 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 con un tinte

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

Modificar una tabla

Cuando se ejecuta la consulta anterior, el nombre de la tabla cambiará. clientela a usuarios… De la misma forma podemos hacer todo cambio peticiones.

🚫