一、在MaxCompute上实现update和delete
ODPS不支持直接通过delete语句删除数据。
MaxCompute 不支持直接对表进行update和delete.
1、更新(update)
更新后的结果筛选出来,然后使用insert overwrite 方法将筛选结果写回原表。
2、删除(delect)
- 通过“TRUNCATE TABLE table_name;”语句清空表数据,也可以用覆盖写的功能实现类似的功能。
对于非分区表
- 如要删除TableA表里的Col=1的数据,使用如下命令即可
INSERT OVERWRITE TABLE TableA SELECT FROM TableA WHERE Col <> 1;
- 要删除全部数据,类似的方式:
INSERT OVERWRITE TABLE TableA SELECT FROM TableA WHERE 1=2;
补充
# 如果表存在删除
drop table if exists table_name;
# 表不存在,创建一个原始表
create table table_name as
select *
from database_table
where XXXXX ;
#如果表存在仅仅想清空表内容,保留原表字段类型
truncate table table_name;
#如果表存,保留原表字段类型,想清空,用新内部覆盖原纪录
insert overwrite table table_name as
select *
from database_table
where XXXXX ;
对于分区表
- 只需要要删除对应的分区即可删除对应的数据:
ALTER TABLE table_name DROP [IF EXISTS] partition (分区名='分区值');