一、实践先行,直接上手

1. hive 表及数据准备

建表,并插入初始数据。向表中插入

hive> use test;
hive> create table kwang_test (id int, name string);
hive> insert into kwang_test values(1,'kwang');
hive> insert into kwang_test values(2,'rzheng');
hive> select * from kwang_test;
OK
1 kwang
2 rzheng

2. insert into 操作

insert into 语法:

INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

通过 insert into 语句向 kwang_test 表中插入一条数据,并查询结果。

hive> insert into table kwang_test values(3,'kk');
hive> select * from kwang_test;
OK
1 kwang
2 rzheng
3 kk

3. insert overwrite 操作

insert overwrite 语法:

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

insert overwrite 标准语法的数据来源是通过 select 语法来插入,但为了方便,直接插入 values。通过 insert overwrite 语句向 kwang_test 表中插入一条数据,并查询结果。

hive> insert overwrite table kwang_test values(4,'zz');
hive> select * from kwang_test;
OK
4 zz

4. 两者异同

看到上面的现象与结果,基本能够明白 insert into 与insert overwrite 之间的异同,两者都可以向 hive 表中插入数据,但 insert into 操作是以追加的方式向 hive 表尾部追加数据,而 insert overwrite 操作则是直接重写数据,即先删除 hive 表的数据,再执行写入操作。注意,如果 hive 表是分区表的话,insert overwrite 操作只会重写当前分区的数据,不会重写其他分区数据。

【参考资料】

[1]. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

[2]. https://my.oschina.net/sshuj/blog/852596

Hive之insert into与insert overwrite区别的更多相关文章

  1. 【原创】大叔问题定位分享(22)hive同时执行多个insert overwrite table只有1个可以执行

    hive 2.1 一 问题 最近有一个场景,要向一个表的多个分区写数据,为了缩短执行时间,采用并发的方式,多个sql同时执行,分别写不同的分区,同时开启动态分区: set hive.exec.dyna ...

  2. INSERT IGNORE 与INSERT INTO的区别

      INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据.这样就可以 ...

  3. INSERT IGNORE 与INSERT INTO的区别,以及replace的用法

    INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据. 这样就可以保 ...

  4. Mysql 语句 insert into 与 replace into 区别

    []insert into 与 replace into 区别 replace into 的运行与insert into 很相似.不同点: 若表中的一个旧记录与一个用于PRIMARY KEY 或 一个 ...

  5. 关于insert /*+ append*/ 各种insert插入速度比较

    来源于:http://www.cnblogs.com/rootq/archive/2009/02/11/1388043.html SQL> select count(*) from t;COUN ...

  6. Oracle 的 INSERT ALL和INSERT FIRST

    描述性的东西就不来了,搞技术的,最喜欢实在的实例.通过下面的例子,大家很快就能明白insert all 与 insert first 的功能,比文字描述更通俗易懂. 一.INSERT ALL 不带条件 ...

  7. insert /*+APPEND*/ 各种insert 插入速度比较

    SQL> select count(*) from t;COUNT(*)----------5442048****************************SQL> alter ta ...

  8. PHP MySQL Insert Into 之 Insert

    向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新记录. 语法 INSERT INTO table_name VALUES (value1, value2,....) 您还可以规定希 ...

  9. hive 内部表与外部表的区别

    hive 内部表: hive> create table soyo55(name STRING,addr STRING,money STRING) row format delimited fi ...

随机推荐

  1. shell 学习笔记2

    shell的常用处理:https://github.com/dylanaraps/pure-bash-bible -d作为分隔符:read xargs -t作为分隔符:sort -F作为分隔符:awk ...

  2. 2.4 vue配置(下)

  3. UVALive-7040-Color(容斥原理)

    链接: https://vjudge.net/problem/UVALive-7040 题意: Recently, Mr. Big recieved n owers from his fans. He ...

  4. Copy Books II

    Description Given n books and each book has the same number of pages. There are k persons to copy th ...

  5. learning scala dependency injection

    println("Step 1: Create a trait which knows how to do create, read, update and delete operation ...

  6. 对象(面向对象、创建对象方式、Json)

    一.面向对象 面向过程:凡事亲力亲为,每件事的具体过程都要知道,注重过程 面向对象:根据需求寻找对象,所有的事都用对象来做,注重结果 面向对象特性:封装.继承.多态(抽象性) js是一门基于对象的语言 ...

  7. fdisk分区命令

    fdisk是Linux系统中最常用的分区工具,通过这个命令也可以查看系统中所有可用的分区,但是这个命令只支持MBR的分区表(这句话应该只对某些系统,CentOS7-1810适用,Debian9.5和o ...

  8. ros平台下python脚本控制机械臂运动

    在使用moveit_setup_assistant生成机械臂的配置文件后可以使用roslaunch demo.launch启动demo,在rviz中可以通过拖动机械臂进行运动学正逆解/轨迹规划等仿真运 ...

  9. java 标准日期格式

    public static void main(String[] argv) { // 使用默认时区和语言环境获得一个日历 Calendar cale = Calendar.getInstance() ...

  10. tab切换里面做轮播图

    这里的轮播图有三页,并且每页的数据有8个,只能将23个数据分割开来,这里要实现5个tab用一个轮播图 <div class="report_detail_class"> ...