Hive insert into table 和 insert overwrite table 的区别

本文详细解析了在数据库中,insertinto和insertoverwritetable两种插入方式的差异。insertinto会追加重复数据,而insertoverwritetable则会清空表后插入,确保数据唯一。通过实例说明了它们在实际操作中的应用和结果。
部署运行你感兴趣的模型镜像

【直接上结论】

insert into table —— 在表后直接插入,不去重

insert overwrite table —— 将原表清空后,再插入数据。


【实际举例】

1、建表:insert_test

CREATE table insert_test as 

SELECT 1 as id

表内数据:1


 2.1、insert插入数据2

insert into table insert_test 

select 2 as id

 表内数据:1,2

 2.2、insert插入数据2

insert into table insert_test 

select 2 as id

 表内数据:1,2,2

即,即使重复,也会继续追加。


 3 insert overwrite 插入数据2

insert overwrite table insert_test 

select 2 as id

 表内数据:2

即清空原表内容,再插入数据。与原表内容重复与否,无关。

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

Hive中,`INSERT INTO TABLE` `INSERT OVERWRITE TABLE` 是用于将数据插入到表中的两个不同命令,它们的主要区别在于如何处理目标表中已有的数据。下面是这两个命令的具体解释及其关键差异: ### 1. **INSERT INTO TABLE** - **作用**:向已有数据的目标表追加新数据。 - **特点**: - 不会删除原有数据,直接在现有基础上添加新的记录。 - 如果表中有大量历史数据,并且你想在此之上增加一些额外的记录,则适合使用此命令。 - 支持分区表非分区表的操作。 ```sql -- 示例:向分区表插入新数据而不影响其他分区内容 INSERT INTO TABLE my_partitioned_table PARTITION (dt='2023-10-02') SELECT id, name FROM source_table WHERE date = '2023-10-02'; ``` ### 2. **INSERT OVERWRITE TABLE** - **作用**:覆盖并替换整个目标表或特定分区的数据。 - **特点**: - 先清除旧有数据再写入新数据,这意味着最终只保留最新一次操作的结果。 - 当你需要更新一批数据而不需要保存之前的版本时非常有用;也可以用来定期刷新某些汇总报表之类的静态信息。 - 同样适用于分区表,在这种情况下只会针对指定的一个或多部分区进行覆写,不会干扰其它未涉及的分区。 ```sql -- 示例:用新数据完全替代某个分区的内容 INSERT OVERWRITE TABLE my_partitioned_table PARTITION (dt='2023-10-02') SELECT id, name FROM updated_source_table WHERE date = '2023-10-02'; ``` ### 关键点总结 - **数据留存情况** - `INSERT INTO`: 追加模式,原数据+新增数据共存。 - `INSERT OVERWRITE`: 覆盖模式,仅保留最新的插入结果。 - **应用场景选择** - 如果想逐步累积数据并且每次只是增量变化,则倾向于使用`INSERT INTO`. - 若是需要周期性地同步某套完整数据集或是修正性的整体替换成最新状态,则更适合运用`INSERT OVERWRITE`. 了解这两种语法的不同可以帮助你在实际工作中更精准地管理Hive数据库内的数据流动与维护策略。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值