Colmena - Alter Table
Este capítulo explica cómo modificar los atributos de una tabla, como cambiar el nombre de la tabla, cambiar los nombres de las columnas, agregar columnas y eliminar o reemplazar columnas.
Declaración de alteración de la tabla
Se utiliza para alterar una tabla en Hive.
Sintaxis
La declaración toma cualquiera de las siguientes sintaxis según los atributos que deseamos 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 ...])
Cambiar nombre a ... Declaración
La siguiente consulta cambia el nombre de la tabla de employee a emp.
hive> ALTER TABLE employee RENAME TO emp;
Programa JDBC
El programa JDBC para cambiar el nombre de una tabla es el 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();
}
}
Guarde el programa en un archivo llamado HiveAlterRenameTo.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo
Salida:
Table renamed successfully.
Declaración de cambio
La siguiente tabla contiene los campos de employee tabla y muestra los campos a cambiar (en negrita).
Nombre del campo | Convertir de tipo de datos | Cambiar nombre de campo | Convertir a tipo de datos |
---|---|---|---|
eid | En t | eid | En t |
name | Cuerda | ename | Cuerda |
salario | Float | salario | Double |
designacion | Cuerda | designacion | Cuerda |
Las siguientes consultas cambian el nombre del nombre de la columna y el 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;
Programa JDBC
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();
}
}
Guarde el programa en un archivo llamado HiveAlterChangeColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn
Salida:
Change column successful.
Declaración de adición de columnas
La siguiente consulta agrega una columna denominada dept a la tabla de empleados.
hive> ALTER TABLE employee ADD COLUMNS (
dept STRING COMMENT 'Department name');
Programa JDBC
El programa JDBC para agregar una columna a una tabla se muestra 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();
}
}
Guarde el programa en un archivo llamado HiveAlterAddColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn
Salida:
Add column successful.
Reemplazar declaración
La siguiente consulta elimina todas las columnas de la employee tabla y la reemplaza con emp y name columnas:
hive> ALTER TABLE employee REPLACE COLUMNS (
eid INT empid Int,
ename STRING name String);
Programa JDBC
A continuación se muestra el programa JDBC para reemplazar eid columna con empid y ename columna con name.
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();
}
}
Guarde el programa en un archivo llamado HiveAlterReplaceColumn.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn
Salida:
Replace column successful.