云数据仓库ADB INSERT INTO SELECT 对比INSERT OVERWRITE SELECT
INSERT INTO SELECT 和 INSERT OVERWRITE SELECT 都是用来插入数据的SQL语句,但它们的行为有所不同:
INSERT INTO SELECT:
这个语句是从一个查询结果中插入数据到一个表中。如果目标表中已有数据,新的数据会被追加到已有数据之后,不会删除原有的记录。这个操作相当于将查询结果集的内容“添加”到目标表中。
INSERT OVERWRITE SELECT:
此语句同样从查询结果中获取数据插入到表中,但在此之前,它会清空目标表(如果是分区表则清空指定分区)中的现有数据,然后再写入新的数据。这意味着此操作会“替换”而非追加数据,适用于需要更新整个表或特定分区数据的场景。
总结来说,如果你需要在已有数据基础上增加新数据,应使用 INSERT INTO SELECT;而当你需要基于某个查询结果完全重写一个表或其分区的数据时,则应使用 INSERT OVERWRITE SELECT。
此回答整理自钉群“云数据仓库ADB-开发者群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。