上一张章节我们已经讲完了数据库和表的增删改查,感兴趣的小伙伴可以点这里: 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)相关推荐

  1. Hive中数据的导入与导出

    最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...

  2. matlab将图片导入工作区,matlab数据的导入和导出,以matlab工作区workspace为source和destination...

    MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入. 保存工作区可以通过菜单进行,也可以通过命令窗口进行. 数据导出 1. 保存整个工作区 选择Fil ...

  3. 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...

    在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能给系统用户更好的操作体验,也提高了用户录入数据的效率.我在较早时期的EasyUI的Web框架上, ...

  4. MySQL基础day03_数据的导入、导出-MySQL 5.6

    MySQL基础day03_数据的导入.导出-MySQL 5.6 注:把数据按照一定格式存放到文件里才能进行数据的导入. 1,数据导入的条件 把文件里的内容保存到数据的表里: 把数据按照一定格式存放文件 ...

  5. (转)基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...

    http://www.cnblogs.com/wuhuacong/p/4777720.html 在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能 ...

  6. R 数据的导入和导出

    2019独角兽企业重金招聘Python工程师标准>>> R 数据的导入和导出 这是从R中导入或导出数据的一个指导手册. 本文档的当前版本为0.01 β.该文档译自 R-2.6.1 文 ...

  7. oracle导入失败后怎样删除已导入数据,Oracle数据的导入、导出、插入、更新及删除总结...

    Oracle数据的导入.导出.插入.更新及删除总结 今天主要介绍一下使用Oracle的IDE:PL\SQL Developer进行数据的导入及导出操做方法. web 1. 数据导出 数据的导出比较简单 ...

  8. matlab数据的导入和导出

    数据的导入和导出 从文本文件中导入数据 part1, 使用importdata函数读取格式较为简单的文本文件 part2, 使用fopen 函数读取格式较为复杂的文本文件 part3, 使用fopen ...

  9. SqlServer2012语句之实例之用SQL语句对表中数据进行操作及数据的导入和导出

    --5月7日   SQL Server实验内容 --一.用SQL语句对表中数据进行操作 --1.根据系部表.班级表.学生表.教师表已有数据(如果没有数据,请使用管理平台或者SQL语句先为以上表添加数据 ...

最新文章

  1. IIS8 添加配置 WCF服务
  2. 工作五年,还没转型为架构师的程序员何去何从?
  3. NS_OPTIONS枚举的用法
  4. WF4.0实战(四):博客申请流程
  5. 修改 ShiroUser 缓存用户
  6. pytest入门学习(2)
  7. 一篇短文带您了解一下EasyCaching
  8. python文件按行读取变为嵌套列表_迭代两个嵌套的2D列表,其中list2具有list1的行号...
  9. IDEA引MAVEN项目jar包依赖导入问题解决
  10. mysql 查询用户权限
  11. 分享关于网站跳出率需要控制在多少
  12. Java 进阶 hello world! - 中级程序员之路
  13. pytest学习:setup、teardown、setup_class、teardown_class的区别
  14. 这位印度小哥,拯救了山河日下的微软帝国
  15. c语言课程设计 选课系统,学生选课系统c语言课程设计.doc
  16. 如何提高深度学习预测准确率
  17. logback中logger的 additivity 属性
  18. Numpy:关于flatten的理解
  19. python 可视化分析平台_python 数据分析数据可视化工具matplotlib
  20. 兰州研究所还是四川审协

热门文章

  1. 早期的牛津lemmatize
  2. 主流主板的启动项快捷键
  3. 浏览器如何发送ajax请求,浏览器关闭时,发送ajax请求
  4. spark—SQL实战案例
  5. 逆向培训2——稀奇古怪题
  6. 【JZOJ A组】跳楼机
  7. easyconnect的初使用
  8. MySQL create table xxx select * from yyy 的坑
  9. Python爬虫之打码平台的使用
  10. 时间卷积网络TCN:时间序列处理的新模型