ไฮฟ์ - เปลี่ยนตาราง
บทนี้อธิบายถึงวิธีการเปลี่ยนแอตทริบิวต์ของตารางเช่นการเปลี่ยนชื่อตารางการเปลี่ยนชื่อคอลัมน์การเพิ่มคอลัมน์และการลบหรือการแทนที่คอลัมน์
แก้ไขคำชี้แจงตาราง
ใช้เพื่อปรับเปลี่ยนตารางใน Hive
ไวยากรณ์
คำสั่งใช้ไวยากรณ์ต่อไปนี้ตามคุณลักษณะที่เราต้องการแก้ไขในตาราง
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 ...]) 
    เปลี่ยนชื่อเป็น…คำชี้แจง
แบบสอบถามต่อไปนี้เปลี่ยนชื่อตารางจาก employee ถึง emp.
hive> ALTER TABLE employee RENAME TO emp; 
    โปรแกรม JDBC
โปรแกรม JDBC เพื่อเปลี่ยนชื่อตารางมีดังนี้
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();
   }
} 
    บันทึกโปรแกรมในไฟล์ชื่อ HiveAlterRenameTo.java ใช้คำสั่งต่อไปนี้เพื่อคอมไพล์และรันโปรแกรมนี้
$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo 
    เอาท์พุต:
Table renamed successfully. 
    เปลี่ยนแปลงคำชี้แจง
ตารางต่อไปนี้ประกอบด้วยฟิลด์ของ employee ตารางและแสดงเขตข้อมูลที่จะเปลี่ยนแปลง (เป็นตัวหนา)
| ชื่อฟิลด์ | แปลงจากประเภทข้อมูล | เปลี่ยนชื่อฟิลด์ | แปลงเป็นประเภทข้อมูล | 
|---|---|---|---|
| eid | int | eid | int | 
| name | สตริง | ename | สตริง | 
| เงินเดือน | Float | เงินเดือน | Double | 
| การกำหนด | สตริง | การกำหนด | สตริง | 
คำค้นหาต่อไปนี้เปลี่ยนชื่อคอลัมน์และชนิดข้อมูลคอลัมน์โดยใช้ข้อมูลข้างต้น:
hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double; 
    โปรแกรม JDBC
ด้านล่างคือโปรแกรม JDBC เพื่อเปลี่ยนคอลัมน์
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();
   }
} 
    บันทึกโปรแกรมในไฟล์ชื่อ HiveAlterChangeColumn.java ใช้คำสั่งต่อไปนี้เพื่อคอมไพล์และรันโปรแกรมนี้
$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn 
    เอาท์พุต:
Change column successful. 
    เพิ่มคำสั่งคอลัมน์
แบบสอบถามต่อไปนี้จะเพิ่มคอลัมน์ชื่อ dept ลงในตารางพนักงาน
hive> ALTER TABLE employee ADD COLUMNS ( 
dept STRING COMMENT 'Department name'); 
    โปรแกรม JDBC
โปรแกรม JDBC เพื่อเพิ่มคอลัมน์ลงในตารางแสดงไว้ด้านล่าง
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();
   }
} 
    บันทึกโปรแกรมในไฟล์ชื่อ HiveAlterAddColumn.java ใช้คำสั่งต่อไปนี้เพื่อคอมไพล์และรันโปรแกรมนี้
$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn 
    เอาท์พุต:
Add column successful. 
    แทนที่คำชี้แจง
แบบสอบถามต่อไปนี้ลบคอลัมน์ทั้งหมดจากไฟล์ employee ตารางและแทนที่ด้วย emp และ name คอลัมน์:
hive> ALTER TABLE employee REPLACE COLUMNS ( 
eid INT empid Int, 
ename STRING name String); 
    โปรแกรม JDBC
ให้ด้านล่างคือโปรแกรม JDBC ที่จะแทนที่ eid คอลัมน์ด้วย empid และ ename คอลัมน์ด้วย 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();
   }
} 
    บันทึกโปรแกรมในไฟล์ชื่อ HiveAlterReplaceColumn.java ใช้คำสั่งต่อไปนี้เพื่อคอมไพล์และรันโปรแกรมนี้
$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn 
    เอาท์พุต:
Replace column successful.