En este capítulo se explica cómo modificar los atributos de una tabla, como un cambio en su nombre de la tabla, cambiar los nombres de las columnas, agregar columnas, y eliminar o sustituir las columnas.
Se utiliza para modificar una tabla en Colmena.
La declaración se cualquiera de las siguientes sintaxis basada en lo que los atributos que queremos modificar en una tabla.
ALTER TABLE name RENAME TO new_name ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...]) ALTER TABLE name DROP [COLUMN] column_name ALTER TABLE name CHANGE column_name new_name new_type ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
La consulta siguiente cambia el nombre de la tabla de empleado a emp.
hive> ALTER TABLE employee RENAME TO emp;
El programa JDBC para cambiar el nombre de una tabla es la siguiente.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterRenameTo { private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { // Register driver and create driver instance Class.forName(driverName); // get connection Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", ""); // create statement Statement stmt = con.createStatement(); // execute statement stmt.executeQuery("ALTER TABLE employee RENAME TO emp;"); System.out.println("Table Renamed Successfully"); con.close(); } }
El programa se guarda en un archivo llamado HiveAlterRenameTo.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterRenameTo.java $ java HiveAlterRenameTo
Table renamed successfully.
La siguiente tabla contiene los campos de tabla de empleados y que muestra los campos que se va a cambiar (en negrita).
Nombre del campo | Conversión de tipo de datos | Cambiar Nombre de campo | Convertir al tipo de datos |
---|---|---|---|
Eid | Int | Eid | Int |
Nombre | Cadena | Ename | Cadena |
Sueldo | Flotación | Sueldo | Doble |
Designación | Cadena | Designación | Cadena |
Las consultas siguientes cambiar el nombre de la columna nombre y tipo de datos de la columna utilizando los datos anteriores:
hive> ALTER TABLE employee CHANGE name ename String; hive> ALTER TABLE employee CHANGE salary salary Double;
A continuación se muestra el programa JDBC para cambiar una columna.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterChangeColumn { private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { // Register driver and create driver instance Class.forName(driverName); // get connection Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", ""); // create statement Statement stmt = con.createStatement(); // execute statement stmt.executeQuery("ALTER TABLE employee CHANGE name ename String;"); stmt.executeQuery("ALTER TABLE employee CHANGE salary salary Double;"); System.out.println("Change column successful."); con.close(); } }
El programa se guarda en un archivo llamado HiveAlterChangeColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterChangeColumn.java $ java HiveAlterChangeColumn
Change column successful.
La consulta siguiente agrega una columna denominada dept. de la tabla de empleados.
hive> ALTER TABLE employee ADD COLUMNS ( > dept STRING COMMENT 'Department name');
El programa JDBC para agregar una columna a una tabla se indica a continuación.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterAddColumn { private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { // Register driver and create driver instance Class.forName(driverName); // get connection Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", ""); // create statement Statement stmt = con.createStatement(); // execute statement stmt.executeQuery("ALTER TABLE employee ADD COLUMNS " + " (dept STRING COMMENT 'Department name');"); System.out.prinln("Add column successful."); con.close(); } }
El programa se guarda en un archivo llamado HiveAlterAddColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterAddColumn.java $ java HiveAlterAddColumn
Add column successful.
La siguiente consulta elimina todas las columnas de laempleados tabla y lo reemplaza con emp ynombres columnas:
hive> ALTER TABLE employee REPLACE COLUMNS ( > eid INT empid Int, > ename STRING name String);
A continuación se muestra el programa JDBC para sustituir eid columna empid y ename columna con el nombre.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterReplaceColumn { private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { // Register driver and create driver instance Class.forName(driverName); // get connection Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", ""); // create statement Statement stmt = con.createStatement(); // execute statement stmt.executeQuery("ALTER TABLE employee REPLACE COLUMNS " +" (eid INT empid Int," +" ename STRING name String);"); System.out.println(" Replace column successful"); con.close(); } }
El programa se guarda en un archivo llamado HiveAlterReplaceColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterReplaceColumn.java $ java HiveAlterReplaceColumn
Replace column successful.