hive实现update与delete

本文介绍了如何在Hive中实现update和delete操作。通过INSERT OVERWRITE TABLE语句,实现了对特定记录的更新,例如将id为2的name从'bbb'更新为'ddd'。同时,展示了使用相同方法进行数据删除,例如删除id为2的记录。这种更新和删除方式是Hive中处理静态数据的一种常见策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

INSERT OVERWRITE TABLE tablename2 [PARTITION (partcol1=val)]


Select * from tablename1 where partition_name=’va1’ or partition_name=val2;


eg:A表数据如下
id(String)        name(String)


----------------------------


1  aaa


2                       bbb


3                       ccc


-----------------------------


要求更新2       bbb为2         ddd


hive脚本如下(TMP_A为分区表):


insert overwrite table TMP_A partition (p='one') select id,"ddd" from A where id = 2;


insert overwrite table TMP_A partition (p='two') select a.id,a.name from A a left outer join (select id from TMP_A where name='one') b on (a.id=b.id) where b.id is NULL: 


insert overwrite table A select * from TMP_A where p='one' or p='two';






其实还有一种方法就是把要update的列建在A表,不用update的列建在B表,然后合并到C表,再重写原来的表。再把A,B,C表DROP掉






Delete语法:


INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement 


[WHERE where_condition] 


[join table]


eg:A表数据如下


id(String)        name(String)


----------------------------


1                       aaa


2                       bbb


3                       ccc


-----------------------------


要求删除2        bbb


hive脚本如下:


insert overwrite table A select id,name from A where id !=2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值