Hadoop之Hive数据的导入与导出(DML)
上一张章节我们已经讲完了数据库和表的增删改查,感兴趣的小伙伴可以点这里: Hadoop之Hive数据库和表的增删改查(DDL).
本章节将要学习对数据操作的DML,主要包括数据的导入和导出,清除。
目录
- 1.数据导入
- 1.1向表中装载数据(load)
- 1.2 插入数据(insert)
- 1.3 查询语句中创建表并加载数据(As Select)
- 1.4 创建表时通过 Location 指定加载数据路径
- 2.数据导出
- 2.1 INSERT导出数据
- 3.数据删除
- 参考资料
1.数据导入
1.1向表中装载数据(load)
语法如下:
load data [local] inpath '数据的 path' [overwrite] into table student [partition (partcol1=val1,…)];
--load data:表示加载数据
--local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
--inpath:表示加载数据的路径
--overwrite:表示覆盖表中已有数据,否则表示追加
--into table:表示加载到哪张表
--student:表示具体的表
--partition:表示上传到指定分区
- 导入数据
从本地导入数据(local)
--local表示数据在本机的系统中
load data local inpath '/opt/modul/hive/student.txt' into table student;
插入数据成功。
从HDFS上导入数据
我们将student数据放入根目录下,这样就在hdfs上了。
将该数据导入进student2表
load data inpath '/student.txt' into table student2;
导入成功:
我们发现根目录下的student.txt不见了
总结:在local导入数据是拷贝一份数据,而在hdfs上导入数据是剪切数据。
1.2 插入数据(insert)
- 基本插入数据
--插入一条数据
insert into student values ("1006","BANZ");
- 根据查询的结果插入
--将表student2查出的结果插入student中
insert into student select * from student2;
成功将student2表里的数据插入
- 覆盖前表(overwrite)
--例子的写法
insert overwrite table student_par
select id, name
from student where month='201709';
--将student表的内容覆盖(删除原来的添加新的)
insert overwrite table student select * from student2;
成功覆盖student表。
1.3 查询语句中创建表并加载数据(As Select)
- 这里是指创建表的同时,从加入数据(as select)
--创建表并添加数据
create table if not exists student3
as select id, name from student;
1.4 创建表时通过 Location 指定加载数据路径
- 允许先建立数据再建立表(默认路径)
先在默认路径建立一个文件夹student4,在存放数据
hadoop fs -mkdir /user/hive/warehouse/student4
cd /opt/modul/hive/
hadoop fs -put student.txt /user/hive/warehouse/student4
然后在数据里建表
create table student4(id string,name string) row format delimited fields terminated by '\t';
建表自带数据
- 允许先建立数据再建立表(自定义路径)
我们在根目录建立一个文件夹studen5
hadoop fs -mkdir /student5
hadoop fs -put /opt/modul/hive/student.txt /student5
建表指定路径
create table if not exists student5 (id int, name string) row format delimited fields terminated by '\t'
location '/student5';
建表成功,数据也存在。
通过location ‘/student5’ 即可指定数据的来源,但通常情况下来说,这种情况应该建立外部表,因为数据可能是其他人上载上来的,我们最好不要删除它。
2.数据导出
2.1 INSERT导出数据
导出表student2里面的数据到student文件夹
--导出表student2里面的文件到student文件夹
insert overwrite local directory '/opt/modul/hive/student'
select * from student2;
数据文集已导出到student文件夹下
导出表student2里面的数据到student文件夹并以逗号分隔
--导出表student2里面的文件到student文件夹但是指定文件以逗号分隔符
insert overwrite local directory
'/opt/modul/hive/student'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
select * from student2;
导出表student2里面的数据到未创建的文件夹(需要取消local)
--suudent2文件夹并不存在,但是该语句会帮我们创建,并将数据放入其中
insert overwrite directory
'/student2'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
select * from student2;
创建成功,文件也存在
通过hadoop命令直接下载
dfs -get /user/hive/warehouse/student2/student.txt
/student2.txt;
Hive Shell 命令导出
一个覆盖 ; >>两个追加
bin/hive -e 'select * from default.student2;' > /opt/module/hive/test.txt;
export命令导出
export 和 import 主要用于两个 Hadoop 平台集群之间 Hive 表迁移。
export table default.student2
to '/student';
export出的数据比普通导出的数据多了一个元数据文件,当导入该文件数据到其他地方时,需要用import
只有当student8不存在或者student8存在但是必须是空表
--将数据导入到student8中
import tabkle student8 from '/student';
导入成功
3.数据删除
Truncate 只能删除管理表中的数据,但表还在,这就是和drop的区别。不能删除外部表中数据,因为外部表连drop都不能删除HDFS上的数据,truncate肯定不能。
--删除表里面的数据
truncate table student;
数据存在,然后删除
删除后没了。
参考资料
《大数据Hadoop3.X分布式处理实战》
Hadoop之Hive数据的导入与导出(DML)相关推荐
- Hive中数据的导入与导出
最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...
- matlab将图片导入工作区,matlab数据的导入和导出,以matlab工作区workspace为source和destination...
MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入. 保存工作区可以通过菜单进行,也可以通过命令窗口进行. 数据导出 1. 保存整个工作区 选择Fil ...
- 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...
在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能给系统用户更好的操作体验,也提高了用户录入数据的效率.我在较早时期的EasyUI的Web框架上, ...
- MySQL基础day03_数据的导入、导出-MySQL 5.6
MySQL基础day03_数据的导入.导出-MySQL 5.6 注:把数据按照一定格式存放到文件里才能进行数据的导入. 1,数据导入的条件 把文件里的内容保存到数据的表里: 把数据按照一定格式存放文件 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...
http://www.cnblogs.com/wuhuacong/p/4777720.html 在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能 ...
- R 数据的导入和导出
2019独角兽企业重金招聘Python工程师标准>>> R 数据的导入和导出 这是从R中导入或导出数据的一个指导手册. 本文档的当前版本为0.01 β.该文档译自 R-2.6.1 文 ...
- oracle导入失败后怎样删除已导入数据,Oracle数据的导入、导出、插入、更新及删除总结...
Oracle数据的导入.导出.插入.更新及删除总结 今天主要介绍一下使用Oracle的IDE:PL\SQL Developer进行数据的导入及导出操做方法. web 1. 数据导出 数据的导出比较简单 ...
- matlab数据的导入和导出
数据的导入和导出 从文本文件中导入数据 part1, 使用importdata函数读取格式较为简单的文本文件 part2, 使用fopen 函数读取格式较为复杂的文本文件 part3, 使用fopen ...
- SqlServer2012语句之实例之用SQL语句对表中数据进行操作及数据的导入和导出
--5月7日 SQL Server实验内容 --一.用SQL语句对表中数据进行操作 --1.根据系部表.班级表.学生表.教师表已有数据(如果没有数据,请使用管理平台或者SQL语句先为以上表添加数据 ...
最新文章
- IIS8 添加配置 WCF服务
- 工作五年,还没转型为架构师的程序员何去何从?
- NS_OPTIONS枚举的用法
- WF4.0实战(四):博客申请流程
- 修改 ShiroUser 缓存用户
- pytest入门学习(2)
- 一篇短文带您了解一下EasyCaching
- python文件按行读取变为嵌套列表_迭代两个嵌套的2D列表,其中list2具有list1的行号...
- IDEA引MAVEN项目jar包依赖导入问题解决
- mysql 查询用户权限
- 分享关于网站跳出率需要控制在多少
- Java 进阶 hello world! - 中级程序员之路
- pytest学习:setup、teardown、setup_class、teardown_class的区别
- 这位印度小哥,拯救了山河日下的微软帝国
- c语言课程设计 选课系统,学生选课系统c语言课程设计.doc
- 如何提高深度学习预测准确率
- logback中logger的 additivity 属性
- Numpy:关于flatten的理解
- python 可视化分析平台_python 数据分析数据可视化工具matplotlib
- 兰州研究所还是四川审协