복붙노트

[HADOOP] HiveQL에서 "ALTER TABLE IF는 t2에서는 TO T1의 RENAME 존재"?

HADOOP

HiveQL에서 "ALTER TABLE IF는 t2에서는 TO T1의 RENAME 존재"?

나는 그것이 존재하는 경우 하이브 테이블의 이름을 변경, 그렇게하지 않는 경우는 오류가 발생하지 않도록합니다.

내가 좋아하는 뭔가가 필요

ALTER TABLE IF는 t2에서는 TO T1의 RENAME 존재;

하지만이 실행되지 않습니다 ( "근처 입력을 인식 할 수 없습니다 'ALTER TABLE 문에'이름 바꾸기 '존재'가 '"), 그리고 나도 해봤 변화를 않습니다. 이것은 워드 프로세서 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RenameTable)에 포함되지 않습니다, 그것은 불가능 어쩌면 때문이다.

사람이 (가 하이브에 존재하는 경우, 예를 들어, try / catch를 사용)이 작업을 수행하는 방법을 알고, 또는 해결합니까?

나는 하이브 1.2입니다.

해결법

  1. ==============================

    1.존재 절은 현재로서는 하이브 CLI에서 작동하지 않는 경우. 당신은 상태 확인을 위해 아래와 같은 프로그램 무언가를 쓸 수 있습니다.

    존재 절은 현재로서는 하이브 CLI에서 작동하지 않는 경우. 당신은 상태 확인을 위해 아래와 같은 프로그램 무언가를 쓸 수 있습니다.

    공용 클래스 HiveAlterRenameTo {    개인 정적 문자열적인 driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

    공공 정적 무효 메인 (문자열 []에 인수)에서 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();
    

    }

  2. from https://stackoverflow.com/questions/41880692/alter-table-if-exists-t1-rename-to-t2-in-hiveql by cc-by-sa and MIT license