语法结构:
1、插入一条数据: INSERT INTO TABLE table_name VALUES(XX,YY,ZZ);
2、利用查询语句将结果导入新表: INSERT OVERWRITE [INTO] TABLE table_name [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement
3、多重插入 FROM from_statement INSERT OVERWRITE TABLE table_name1 [PARTITION (partcol1=val1, partcol2=val2 ...)]
select_statement1 INSERT OVERWRITE TABLE table_name2 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement2] ...
示列:

4、分区插入
分区插入有两种,一种是静态分区,另一种是动态分区。如果混合使用静态分区和动态分区, 则静态分区必须出现在动态分区之前。现分别介绍这两种分区插入。
静态分区:
A)、创建静态分区表
B)、从查询结果中导入数据
C)、查看插入结果
动态分区:
静态分区需要创建非常多的分区,那么用户就需要写非常多的 SQL!Hive 提供了一个动态分 区功能,其可以基于查询参数推断出需要创建的分区名称。
A)、创建分区表,和创建静态分区表是一样的
B)、参数设置
![]()
注意:动态分区默认情况下是开启的。但是却以默认是”strict”模式执行的,在这种模式 下要求至少有一列分区字段是静态的。这有助于阻止因设计错误导致查询产生大量的分 区。但是此处我们不需要静态分区字段,估将其设为 nonstrict。
对应还有一些参数可设置:

小技能补充:如果以上参数被更改过,想还原,请使用 reset 命令执行一次即可
C)、动态数据插入

注意:查询语句 select 查询出来的动态分区 age 和 zipcode 必须放最后,和分区字段对应, 不然结果会出错
D)、查看插入结果
select * from student_ptn2 where city=’sa’ and zipcode=’MA’;
5、CTAS(create table … as select …)
在实际情况中,表的输出结果可能太多,不适于显示在控制台上,这时候,将 Hive 的查询 输出结果直接存在一个新的表中是非常方便的,我们称这种情况为 CTAS
展示:CREATE TABLE mytest AS SELECT name, age FROM test;
注意:CTAS 操作是原子的,因此如果 select 查询由于某种原因而失败,新表是不会创建的!