How to rename a hive table without changing location?

Osiris picture Osiris · Mar 12, 2016 · Viewed 82.3k times · Source

Based on the Hive doc below:

Rename Table

ALTER TABLE table_name RENAME TO new_table_name;

This statement lets you change the name of a table to a different name.

As of version 0.6, a rename on a managed table moves its HDFS location as well. (Older Hive versions just renamed the table in the metastore without moving the HDFS location.)

Is there any way to rename a table without changing the location?

Answer

Sanjeev picture Sanjeev · Aug 14, 2018

Yeah we can do that. You just need to follow below three commands in sequence.

  1. Lets say you have a external table test_1 in hive. And you want to rename it test_2 which should point test_2 location not test_1. Then you need to convert this table into Managed table using below command. test_1 -> pointing to test_1 location

    ALTER TABLE db_name.test_1 SET TBLPROPERTIES('EXTERNAL'='FALSE');
    
  2. Rename the table name.

    ALTER TABLE db_name.test_1 RENAME TO db_name.test_2;
    
  3. Again convert the managed table after renaming to external table.

    ALTER TABLE db_name.test_2 SET TBLPROPERTIES('EXTERNAL'='TRUE');
    

db_name.test_2 table will point the test_2 location. If we do it without making the managed table it will point the test_1 location.