如果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上。
答案 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();
}