Hive常用DML操作
一、加载文件数据到表
1.1 语法
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE]
INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]使用建议:
不论是本地路径还是 URL 都建议使用完整的
加载对象是分区表时建议显示指定分区
1.2 示例
新建分区表:
CREATE TABLE emp_ptn(
empno INT,
ename STRING,
job STRING,
mgr INT,
hiredate TIMESTAMP,
sal DECIMAL(7,2),
comm DECIMAL(7,2)
)
PARTITIONED BY (deptno INT) -- 按照部门编号进行分区
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";从 HDFS 上加载数据到分区表:
二、查询结果插入到表
2.1 语法
可以将 SELECT 语句的查询结果插入多个表(或分区),称为多表插入。语法如下:
2.2 动态插入分区
在向分区表插入数据时候,分区列名是必须的,但是列值是可选的。如果给出了分区列值,我们将其称为静态分区,否则它是动态分区。动态分区列必须在 SELECT 语句的列中最后指定,并且与它们在 PARTITION() 子句中出现的顺序相同。
2.3 示例
新建 emp 表,作为查询对象表
完成后 emp 表中数据如下:

为清晰演示,先清空
emp_ptn表中加载的数据:
静态分区演示:从
emp表中查询部门编号为 20 的员工数据,并插入emp_ptn表中,语句如下:

接着演示动态分区:

三、使用SQL语句插入值
使用时必须为表中的每个列都提供值。不支持只向部分列插入值(可以为缺省值的列提供空值来消除这个弊端);
如果目标表表支持 ACID 及其事务管理器,则插入后自动提交;
不支持支持复杂类型 (array, map, struct, union) 的插入。
四、更新和删除数据
4.1 语法
更新和删除的语法比较简单,和关系型数据库一致。需要注意的是这两个操作都只能在支持 ACID 的表,也就是事务表上才能执行。
五、查询结果写出到文件系统
5.1 语法
5.2 示例
Last updated