Hive之DML操作
创始人
2024-02-15 15:37:49
0

Hive系列第六章


第六章 DML操作

基本上都是针对表的操作了。

DDL: Data Definition Language     数据定义语言
DML: Data Manipulation Language   数据操纵语言
DQL :Data Query Language 数据查询语言

6.1 数据导入

6.1.1 装载数据

6.1.1.1 装载数据理论

语法结构:

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

解释:

1、LOAD DATA:加载数据
2、LOCAL:从本地加载数据到 hive 表;不加local表示从 HDFS 移动(剪切)数据到 hive 表。注意:在分区表中,当使用的是hive3.x版本,那么如果不指定具体的分区,也会从hdfs上面复制一份到默认的分区__HIVE_DEFAULT_PARTITION__中间。这是3.x版本新特性。
3、INPATH: 加载数据的路径
4、'filepath' : 具体的待上传的数据的路径
5、OVERWRITE:  覆盖表中已有数据,否则表示追加
6、INTO TABLE: 加载到哪张表
7、tablename: 具体的表
8、PARTITION: 上传到指定分区

6.1.1.2 装载数据示例

// 查看当前正在使用的库:
select current_database();// 创建表
create table student(id int, name string, sex string, age int, department string) row format delimited fields terminated by ",";// 查看表
show tables;// 往表中加载数据:
load data local inpath "/home/data/student.txt" into table student;// 查询数据
select id,name,sex,age,department from student;

6.1.2 插入数据

1、插入一条数据:

INSERT INTO TABLE tablename VALUES(a,b,c)

示例:

insert into table student (id, name, sex, age, department) values (101,"张三2","M",222,"IT");

2、利用查询语句将结果导入新表:

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

示例:

student2表需要先创建
create table student2(id int, name string, sex string, age int, department string) row format delimited fields terminated by ",";hive (mydb)> insert into table student2 select id,sex,name,age,department from student where department = 'CS';
hive (mydb)> select * from student2;
OK
student2.id	student2.name	student2.sex	student2.age	student2.department
95013	男	李四	21	CS
95014	女	李五	19	CS
95012	女	李十	20	CS
95010	男	王一	19	CS
95006	男	王三	23	CS
95008	女	王五	18	CS
95001	男	王九	20	CS
Time taken: 0.097 seconds, Fetched: 7 row(s)
insert into 插入多次会多次在后面追加数据。INSERT OVERWRITE 插入数据会覆盖原来的表里面的所有的数据,不仅仅是重复的那几行,是所有都覆盖。

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] ... 

示例(上面2和3一起):

创建分区表:
create table student_ptn (id int, name string, sex string, age int) partitioned by (department string) row format delimited fields terminated by ",";单重插入:
insert into table student_ptn partition (department = 'IS') select id,sex,name,age from student where department  = 'IS';
insert into table student_ptn partition (department = 'CS') select id,sex,name,age from student where department  = 'CS';
insert into table student_ptn partition (department = 'MA') select id,sex,name,age from student where department  = 'MA';多重插入:
from student 
insert into table student_ptn partition (department = 'IS') select id,sex,name,age where department = 'IS' 
insert into table student_ptn partition (department = 'CS') select id,sex,name,age where department = 'CS' 
insert into table student_ptn partition (department = 'MA') select id,sex,name,age where department = 'MA' 

6.2 数据导出

6.2.1 INSERT OVERWRITE导出

语法结构:

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement 

示例:

insert overwrite local directory "/home/data/cs_student" select * from student where department = 'CS';insert overwrite directory "/home/data/cs_student5" select * from student where department = 'CS';

6.2.2 Hive Shell命令导出

[root@hadoop10 ~]# hive -e 'select * from mydb.student;' > /home/data/student2.txt;
which: no hbase in (.:.:.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/software/jdk/bin:/software/zk/bin:/software/hadoop/bin:/software/hadoop/sbin:/software/hive/bin:/root/bin)
Hive Session ID = 36ee5fc2-cdfc-4057-86ee-f4dad8fbddbcLogging initialized using configuration in jar:file:/software/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive Session ID = fd035b16-f727-490f-beed-c4fb58122c0f
OK
Time taken: 2.273 seconds, Fetched: 23 row(s)
[root@hadoop10 ~]# cd /home/data/
[root@hadoop10 data]# cat student2.txt 

6.2.3 HDFS命令导出

hive (mydb)> dfs -get /user/hive/warehouse/mydb.db/student/student.txt /home/data/student3.txt;
hive (mydb)> 


声明:
        文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

微博地址: http://weibo.com/luoyepiaoxue2014 点击打开链接

相关内容

热门资讯

公布《行政执法监督条例》 新华社北京12月23日电 国务院总理李强日前签署国务院令,公布《行政执法监督条例》(以下简称《条例》...
加快制造业中试平台高水平建设(... 四川成都高新区蜂鸟智造中试基地,洁净的车间里,数条中试生产线运转,助推科研项目“跑完”走向市场的“最...
进一步发挥房地产项目“白名单”... ● 本报记者 王舒嫄 12月22日至23日,全国住房城乡建设工作会议在北京召开。会议提出,要进一步发...
双阳法院:运用调解方式 化解行... 随着法治建设的深入推进,人民群众的法治意识和维权意识不断提高,行政案件逐渐增长,而行政争议发生在“官...
凌源钢铁股份有限公司关于诉讼进... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
苏州瀚川智能科技股份有限公司 ... 证券代码:688022 证券简称:瀚川智能 公告编号:2025-097 苏州瀚川智能科技股份有限公司...
三部门:不断完善学前教育成本分... 观点网讯:12月23日,国家发展改革委、教育部、财政部联合发布《关于完善幼儿园收费政策的通知》,要求...
汪清林区法院:化解未成年人纠纷... 近日,吉林省汪清林区法院审结了一起涉未成年人在校遭受人身损害案件,法院充分考量了未成年人的行为特点及...
北京市长城保护条例 北京市人民代表大会常务委员会公告 〔十六届〕第45号 《北京市长城保护条例》已由北京市第十六届人民代...
棒杰股份(002634)披露关... 截至2025年12月23日收盘,棒杰股份(002634)报收于5.28元,较前一交易日下跌4.52%...