hive內部表和外部表之間的相互轉換
背景
在對hive進行進一步瞭解的同時,發現了hive的內部表和外部表可以通過更改屬性進行轉換,並且不會因爲數據量大小影響轉換的性能
實現
內部錶轉外部表
alter table xm_testA set TBLPROPERTIES ('EXTERNAL = true')
外部錶轉換內部表
alter table xm_testB set TBLPROPTIES ('EXTERNAL = false')
使用場景
如果創建的外部表在默認的路徑下,不會刪除文件,即使更改表名,該路徑下的文件的名字也不會改變,此時如果創建再創建一個和原來名字相同的外部表,會造成兩個表的數據路徑是一樣的。如果第二次創建的表和第一次創建的表結構不一致,在查詢第二個表時,會報錯。
這種情景通常用在備份表的時候出現:
當表結構出現變化時,要將歷史表:xm_test表備份爲xm_test_back,再創建一個新具有的表結構的xm_test,但是由於上述的原因,會出現錯誤,解決方案如下:
將xm_text,轉換成內部表,將其改名爲:xm_test_back,再創建一個具有新的表結構的外部表xm_test。
原文鏈接:https://blog.csdn.net/weixin_43192721/article/details/88420932