HiveSQL DML加载数据

2、DML

2.1加载数据脚本

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE
tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

2.2加载本地数据文件
创建一个文本文件存储的表,并以"\t"作为分隔符,方便构造和上传数据

CREATE	TABLE student( 
id string comment '学号',
username string comment ' 姓 名 ', 
classid int comment ' 班 级 id', 
classname string comment '班级名称'
)comment '学生信息主表'
partitioned by (come_date string comment '按入学年份分区')
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
LINES TERMINATED BY '\n'
STORED AS	textfile;

构造与表对应的输入文件
将本地数据文件加载到表中

LOAD DATA LOCAL INPATH './student.txt' OVERWRITE INTO TABLE student PARTITION(come_date=20170903);

通过 SELECT 查看表中是否加载了数据

select * from student;

2.3加载 HDFS 数据文件
将之前的本地文件上传至自己的 hdfs 目录中

hdfs dfs -copyFromLocal student.txt /tmp/input/

加载 HDFS 数据文件的脚本

LOCAL DATA INPATH '/tmp/input/student.txt' OVERWRITE INTO TABLE student PARTITION(come_date=20170904);

注:原始的 hdfs 文件数据将被 move 到目标表的数据目录当中,注意源文件目录和目标文件目录的权限。

通过 SELECT 查看表中是否加载了数据
SELECT * FROM STUDENT;

2.4将查询结果插入到数据表中
脚本模板

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

样例

insert overwrite table student1 partition(come_date='20170905')  
select id,username,classid,classname from student1
where come_date='20170904';

2.5多插入模式(一次查询多次插入)

模板

FROM from_statement
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol=val)] 
select_statement1
[INSERT OVERWRITE TABLE tablename2 [PARTITION ...]
select_statement2
...

样例

from student1
insert overwrite table student1 partition(come_date='20170906') 
select id,username,classid,classname where come_date='20170905'
insert overwrite table student1 partition(come_date='20170907') 
select id,username,classid,classname where come_date='20170905'
insert overwrite table student1 partition(come_date='20170908') 
select id,username,classid,classname where come_date='20170905'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值