1. hive 表及数据准备apache
建表,并插入初始数据。向表中插入ssh
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 操做spa
insert into 语法:.net
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]
经过 insert into 语句向 kwang_test 表中插入一条数据,并查询结果。code
hive> insert into table kwang_test values(3,'kk'); hive> select * from kwang_test; OK 1 kwang 2 rzheng 3 kk
3. insert overwrite 操做blog
insert overwrite 语法:get
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 表中插入一条数据,并查询结果。string
hive> insert overwrite table kwang_test values(4,'zz'); hive> select * from kwang_test; OK 4 zz
4. 二者异同it
看到上面的现象与结果,基本可以明白 insert into 与insert overwrite 之间的异同,二者均可以向 hive 表中插入数据,但 insert into 操做是以追加的方式向 hive 表尾部追加数据,而 insert overwrite 操做则是直接重写数据,即先删除 hive 表的数据,再执行写入操做。注意,若是 hive 表是分区表的话,insert overwrite 操做只会重写当前分区的数据,不会重写其余分区数据。table
【参考资料】
[1]. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML