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.