当前位置:   article > 正文

Hive 删除一个字段_hive 删除字段

hive 删除字段

        看到这个标题,是不是眼睛一亮,心想hive也能用一行语法删除一个字段或者批量删除了?就像新增一个字段一样。(此时新增字段内心:加我容易,删我难~~)

  • hive 表增加一个字段:
alter table table_name[注:表名] add columns (column[注:字段名] string[注:字段类型] comment ‘XXXX’[注:字段注释]) cascade;

           答案是:当然不能!!!

        hive是不支持alter table table_name drop columns这种语法的

        不过假如你也像我一样手欠乱改leader的表不小心加错了一个字段,又不想删表重新再建,怎么办?

        关键字replace帮助你

语法:

  1. --如果想删除最后一个字段column_2
  2. create table table_name (
  3. column_1 string,
  4. column_2 int);
  5. --删除column_2
  6. alter table table_name replace columns(
  7. column_1 string) cascade; --column_2不写,即删除column_2,保留column_1

特别注意:这个语法不是删除哪个字段写哪个字段,而是写表中所有字段除了被删除的那个。

(因为我一激动只写了要删的字段,最后表中就只保留了要被删的)

        可能有人要问,这和重新键表有什么区别,我只能说,删表建表还是要比这种方式多写几行代码吖,而且有一定的风险。对我而言就是不想被发现,哈哈哈。。。。

补充一个小知识点:

问:为什么hive表在增删改的时候要加上cascade这个关键字呢?

答:CASCADE会刷历史分区字段。

说明:

  • 因为hive表大部分是分区表,而加上cascade【注:中文翻译为“级联”】关键字,不仅会变更新分区的表结构(metadata),同时也会变更旧分区的表结构。
  • 当使用级联删除表中信息时,如果A表中的字段引用了B表中的字段,删除B表中字段信息,相应的A表也会删除。(当父表的信息删除,子表的信息也自动删除)

对于分区表,在增删改时,一定要加上cascade,否则其历史分区的元数据(metadata)信息将无法正常更新,可能会出现访问历史分区时莫名的报错。


一个写技术博客的小小目标:

        开心写作,愿所有的技术点都可以用大白话表达出来,从此没有难理解的技术


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/911320
推荐阅读
相关标签
  

闽ICP备14008679号