2017-01-26 3 views
0

Я хочу переименовать таблицу Hive, если она существует, и не генерировать ошибку, если это не так."ALTER TABLE IF EXISTS t1 RENAME TO t2" в HiveQL?

мне нужно что-то вроде

ALTER TABLE IF EXISTS t1 Присвоить t2;

но это не работает («не может распознать ввод рядом с« если »существует« переименовать »в инструкции alter table»), а также те варианты, которые я пробовал. Это не рассматривается в документах (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RenameTable), может быть, потому что это невозможно.

Кто-нибудь знает, как это сделать, или обходной путь (например, try/catch, если он существует в Hive)?

I'm on Hive 1.2.

ответ

0

Предложение IF EXIST в настоящее время не работает в Hive CLI. Вы можете написать программу, как показано ниже, для проверки состояния.

открытый класс HiveAlterRenameTo { частный статический драйвер строкиName = "org.apache.hadoop.hive.jdbc.HiveDriver";

государственной статической силы основных (String [] арг) бросает 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(); 

}

Смежные вопросы