Hive 基本操作(二)DML操作
1、DML 操作
1.1、Load 装载数据
语法结构:
LOAD DATA [LOCAL] INPATH 'filepath/uri'
[OVERWRITE] INTO TABLE tb_name [PARTITION (partcol1=val1, partcol2=val2 ...)];
关键字说明:
(1)LOAD 操作只是单纯的复制或者移动操作,将数据文件移动到 Hive 表对应的位置。
(2)LOCAL 关键字:如果指定了 LOCAL, LOAD 命令会去查找本地文件系统中的 filepath。如果没有指定 LOCAL 关键字,则根据 inpath 中的 uri 查找文件。
注意:uri 是指 hdfs 上的路径,分简单模式和完整模式两种,例如:
简单模式:/user/hive/project/data1
完整模式:hdfs://namenode_host:9000/user/hive/project/data1
(3)filepath:
相对路径,例如:project/data1
绝对路径,例如:/user/home/project/data1
包含模式的完整 URI,列如:hdfs://namenode_host:9000/user/home/project/data1
注意:inpath 子句中的文件路径下,不能再有文件夹。
(4)overwrite 关键字:如果使用了 OVERWRITE 关键字,则目标表(或者分区)中的内容会被删除,然后再将 filepath 指向的文件/目录中的内容添加到表/分区中。如果目标表(分区)已经有一个文件,并且文件名和 filepath 中的文件名冲突,那么现有的文件会被新文件所替代。
具体实例:
(1)加载本地相对路径数据:
(2)加载绝对路径数据:
(3)加载包含模式数据:
(4)overwrite 关键字使用:
1.2、Insert 插入数据
语法结构:
(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] ...;
示例:
from mingxing
insert into table mingxing2 select id,name,sex,age
insert into table mingxing select id,name,sex,age,department;
# 从 student 表中,按不同的分区字段进行查询得的结果分别插入不同的 hive 表分区中
from student
insert into table ptn_student partition(city='MA') select id,name,sex,age,department where
department='MA'
insert into table ptn_student partition(city='IS') select id,name,sex,age,department where
department='IS';
insert into table ptn_student partition(city='CS') select id,name,sex,age,department where
department='CS';
(4)分区插入:
分区插入有两种,一种是静态分区,另一种是动态分区。如果混合使用静态分区和动态分区,则静态分区必须出现在动态分区之前。现分别