在HiveQL中“ALTER TABLE IF EXISTS t1 RENAME to t2”?

时间:2017-01-26 18:44:05

标签: hadoop hive

如果Hive表存在,我想重命名它,如果不存在则不生成错误。

我需要像

这样的东西

ALTER TABLE IF EXISTS t1重命名为t2;

但这不会运行(“无法识别输入附近'如果''存在''重命名'在alter table语句中”,并且我尝试过的变化也没有。文档(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RenameTable)中没有介绍,可能因为它不可能。

是否有人知道如何执行此操作或解决方法(例如,如果它存在于Hive中,请尝试/ catch)?

我在Hive 1.2上。

1 个答案:

答案 0 :(得分:0)

IF EXIST子句目前在Hive CLI中不起作用。您可以编写类似下面的程序来进行条件检查。

public class HiveAlterRenameTo {    private static String driverName =" org.apache.hadoop.hive.jdbc.HiveDriver";

public static void main(String [] args)抛出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
  Resultset res = stmt.executeQuery("SELECT count(*) FROM <Table_name> ;");


  if (res > 0) {
    // execute statement
  stmt.executeQuery("ALTER TABLE employee RENAME TO emp;");
    System.out.println("Table Renamed Successfully");

  }
  else {
        System.out.println("Table Not exist");
  }
  con.close();

}