Hive - Alter Table
Questo capitolo spiega come modificare gli attributi di una tabella, come cambiare il nome della tabella, cambiare i nomi delle colonne, aggiungere colonne e cancellare o sostituire le colonne.
Istruzione Alter Table
Viene utilizzato per modificare una tabella in Hive.
Sintassi
L'istruzione accetta una delle seguenti sintassi in base agli attributi che desideriamo modificare in una tabella.
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 ...])
Rename To ... Statement
La query seguente rinomina la tabella da employee per emp.
hive> ALTER TABLE employee RENAME TO emp;
Programma JDBC
Il programma JDBC per rinominare una tabella è il seguente.
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();
}
}
Salvare il programma in un file denominato HiveAlterRenameTo.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.
$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo
Produzione:
Table renamed successfully.
Dichiarazione di modifica
La tabella seguente contiene i campi di employee tabella e mostra i campi da modificare (in grassetto).
Nome campo | Converti da tipo di dati | Cambia nome campo | Converti in tipo di dati |
---|---|---|---|
eid | int | eid | int |
name | Corda | ename | Corda |
stipendio | Float | stipendio | Double |
designazione | Corda | designazione | Corda |
Le seguenti query rinominano il nome della colonna e il tipo di dati della colonna utilizzando i dati sopra:
hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double;
Programma JDBC
Di seguito è riportato il programma JDBC per modificare una colonna.
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();
}
}
Salvare il programma in un file denominato HiveAlterChangeColumn.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.
$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn
Produzione:
Change column successful.
Istruzione Aggiungi colonne
La seguente query aggiunge una colonna denominata dept alla tabella dei dipendenti.
hive> ALTER TABLE employee ADD COLUMNS (
dept STRING COMMENT 'Department name');
Programma JDBC
Di seguito viene fornito il programma JDBC per aggiungere una colonna a una tabella.
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();
}
}
Salvare il programma in un file denominato HiveAlterAddColumn.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.
$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn
Produzione:
Add column successful.
Sostituisci istruzione
La seguente query elimina tutte le colonne dal file employee table e lo sostituisce con emp e name colonne:
hive> ALTER TABLE employee REPLACE COLUMNS (
eid INT empid Int,
ename STRING name String);
Programma JDBC
Di seguito è riportato il programma JDBC da sostituire eid colonna con empid e ename colonna 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();
}
}
Salvare il programma in un file denominato HiveAlterReplaceColumn.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.
$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn
Produzione:
Replace column successful.