Hive-insert into table 与 insert overwrite table 区别
区分insert into 和 insert overowrite:
0、
命令格式
INSERT OVERWRITE|INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [(col1,col2 ...)]
select_statement
FROM from_statement;
参数说明
- tablename:需要插入数据的目标表名称。
- PARTITION (partcol1=val1, partcol2=val2 ...):需要插入数据的分区名称,此参数不允许使用函数等表达式,只能是常量。
- select_statement:SELECT子句,从源表中查询需要插入的数据。
- from_statement:FROM子句,代表数据来源。例如,源表名称。
功能说明
INSERT OVERWRITE/INTO用于将计算的结果保存目标表中。
- insert into:直接向表或表的分区中追加数据。
- insert overwrite:先清空表中的原有数据,再向表或分区中插入数据。
示例
- 计算
sale_detail表中不同地区的销售额存入表sale_detail_insert中。--创建目标表sale_detail_insert。
create table sale_detail_insert like sale_detail; --给目标表增加分区。
alter table sale_detail_insert add partition(sale_date='2013', region='china'); --从源表sale_detail中取出数据插入目标表sale_detail_insert。
insert overwrite table sale_detail_insert partition (sale_date='2013', region='china')
select shop_name, customer_id,total_price from sale_detail; - 源表与目标表的对应关系依赖于在
select子句中列的顺序,而不是表与表之间列名的对应关系。例如如下语句。insert overwrite table sale_detail_insert partition (sale_date='2013', region='china')
select customer_id, shop_name, total_price from sale_detail;在创建
sale_detail_insert表时,列的顺序为shop_name string、customer_id string、total_price bigint,而从sale_detail向sale_detail_insert插入数据的顺序为customer_id、shop_name、total_price。此时,会将sale_detail.customer_id的数据插入sale_detail_insert.shop_name,将sale_detail.shop_name的数据插入sale_detail_insert.customer_id。 - 向某个分区插入数据时,分区列不允许出现在
select列表中。下面语句报错返回,sale_date,region为分区列,不允许出现在静态分区的insert语句中。insert overwrite table sale_detail_insert partition (sale_date='2013', region='china')
select shop_name, customer_id, total_price, sale_date, region from sale_detail; partition的值只能是常量,不可以出现表达式。以下为错误用法。insert overwrite table sale_detail_insert partition (sale_date=datepart('2016-09-18 01:10:00', 'yyyy') , region='china')
select shop_name, customer_id, total_price from sale_detail;
使用动态分区注意事项
insert into partition时,如果分区不存在,会自动创建分区。- 多个
insert into partition作业并发时,如果分区不存在,会自动创建分区,但只会成功创建一个分区。 - 如果不能控制
insert into partition作业并发,则只能通过预创建分区避免问题。
1、insert into 语句
Hive> insert into table account select id,age,name from account_tmp;
2、insert overwrite语句
hive> insert overwrite table account2 select id,age,name from account_tmp;
--------------------
overwrite本质是覆盖现有数据!!!!(清空原有数据,新增查询数据),而into是直接将数据写入库。
参考:
https://blog.csdn.net/paopaopotter/java/article/details/83616295
https://blog.csdn.net/qq_41582642/article/details/82897424
Hive-insert into table 与 insert overwrite table 区别的更多相关文章
- 【原创】大叔问题定位分享(22)hive同时执行多个insert overwrite table只有1个可以执行
hive 2.1 一 问题 最近有一个场景,要向一个表的多个分区写数据,为了缩短执行时间,采用并发的方式,多个sql同时执行,分别写不同的分区,同时开启动态分区: set hive.exec.dyna ...
- hive INSERT OVERWRITE table could not be cleaned up.
create table maats.account_channel ROW FORMAT DELIMITED FIELDS TERMINATED BY '^' STORED AS TEXTFILE ...
- Hive:insert into table 与 insert overwrite table 区别
创建测试表,来测试看看测试结果: create table test(name string,pwd string,createdate string)row format delimited fie ...
- (转)Lua的table库函数insert、remove、concat、sort详细介绍
原帖链接:http://www.jb51.net/article/64711.htm#comments 有增注标识的地方为额外注释,非原帖内容. 函数列表:(增注:只能用于数组!) table.ins ...
- Lua的table库函数insert、remove、concat、sort详细介绍(转载)
函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j] ...
- insert into linksvr or insert into from linksvr
通过链接服务器将实例A上的数据写入实例B,通常有以下两种方式--方案1:在实例A上执行insert into LinkForB.B..TableB select * from TableA--方案2: ...
- 使用batch insert解决MySQL的insert吞吐量问题
最近使用了一个非常简单易用的方法解决了业务上的一个insert吞吐量的问题,在此总结一下. 首先我们明确一下,insert吞吐量其实并不是指的IPS(insert per second),而是指的RP ...
- 【转载】alter table move 和 alter table shrink space的区别
move 和shrink 的共同点1.收缩段2.消除部分行迁移3.消除空间碎片4.使数据更紧密 shrink 语法: alter table TABLE_NAME shrink space [com ...
- mysql 数据库插入语句之insert into,replace into ,insert ignore
近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下. ①关于insert into : insert into table_name values(); insert into t ...
随机推荐
- Java基础之原生JDBC操作数据库
前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...
- CODING 助力江苏高速信息实现组织敏捷与研发敏捷,领跑智慧交通新基建
疫情之下的高速公路管控重任 江苏高速公路信息工程有限公司(以下简称:江苏高速信息)成立于 2002 年,是江苏交通控股旗下,专业从事高速公路领域机电系统集成.智能交通软硬件研发.大数据分析运营的高新技 ...
- 最近公共祖先 牛客网 程序员面试金典 C++ Python
最近公共祖先 牛客网 程序员面试金典 C++ Python 题目描述 有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1.现在有两个结点a,b.请设计一个算法,求出a和b ...
- java随手记 面向对象
// 可以把两个类放在同一个文件中,但文件中只能有一个类是公共类,且公共类必须与文件同名,即xxx.java,源代码中的每个类编译成class文件 // java库中的类 // java.util.* ...
- HydroD:辅助脚本函数
HydroD:辅助函数 在HydroD中,使用JS脚本可以快速进行模拟参数设置,但是经过尝试,HydroD中的JS脚本语言并不支持现在JavaScript中的一些语法.所以考虑采用Matlab字符串拼 ...
- easypoi导出动态表头excel
easypoi导出动态表头excel 1: springBoot项目maven依赖: <dependency> <groupId>cn.afterturn</groupI ...
- 12组-Alpha冲刺-3/6
一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15546442.html 小组人数:10人 二.冲刺概况汇报 侯钦凯 过去两天完成 ...
- 问题 G: 心急的C小加
题目描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否 ...
- laravel DB 类库
DB 类操作数据库 基本用法: DB::table('tableName'); 获取操作tableName 表 增加信息 对数据库中的某个表增加数据主要有两个函数可以 ...
- Python 练习 人事管理
人事管理系统介绍:1.展示页面: ①首页: ==========欢迎来到简历管理系统v2.1.1========== 1.管理员登录 ...