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。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值