一. 数据导入

1. 语法

load data [local] inpath 'path' [overwrite] into table table_name [partition (partcol1=val1,…)];

1). load data:表示加载数据

2). local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表

3). inpath:表示加载数据的路径

4). overwrite:表示覆盖表中已有数据,否则表示追加

5). into table:表示加载到哪张表

6). partition:表示上传到指定分区

2. 实操

1). 加载本地文件到hive

-- 创建一张表
create table student(id string, name string) row format delimited fields terminated by '\t'; -- 加载本地文件
load data local inpath '/opt/module/datas/student.txt' into table default.student;

2). 加载HDFS文件到hive中

#上传文件
dfs -put /opt/module/datas/student.txt /user/nty/hive;
-- 加载HDFS上数据
load data inpath '/user/nty/hive/student.txt' into table default.student;

3). 加载数据覆盖表中已有的数据

#上传文件
dfs -put /opt/module/datas/student.txt /user/nty/hive;
-- 加载数据覆盖表中已有的数据
load data inpath '/user/nty/hive/student.txt' overwrite into table default.student;

3. 通过查询语句向表中插入数据(Insert)

1). 创建一张分区表

create table student(id int, name string) partitioned by (month string) row format delimited fields terminated by '\t';

2). 基本插入数据

insert into table  student partition(month='') values(1,'wangwu'),(2,’zhaoliu’);

3). 基本模式插入(根据单张表查询结果)

insert overwrite table student partition(month='')
select id, name from student where month='';

insert into:以追加数据的方式插入到表或分区,原有数据不会删除

insert overwrite:会覆盖表或分区中已存在的数据

4).多表(多分区)插入模式(根据多张表查询结果)

from student
insert overwrite table student partition(month='')
select id, name where month=''
insert overwrite table student partition(month='')
select id, name where month='';

4. 查询语句中创建表并加载数据(As Select)

-- 根据查询结果创建表(查询的结果会添加到新创建的表中)
create table if not exists student3
as select id, name from student;

5. 创建表时通过Location指定加载数据路径

1). 上传数据到hdfs上

 dfs -mkdir /student;

 dfs -put /opt/module/datas/student.txt /student;

2). 创建表,并指定在hdfs上的位置

create external table if not exists student5(
id int, name string
)
row format delimited fields terminated by '\t'
location '/student;

6.Import数据到指定表中

import table student2 partition(month='') from
'/user/hive/warehouse/export/student';

注意:先用export导出后,再将数据导入。

二. 数据导出

1.Insert 导出

-- 将查询的结果导出到本地
insert overwrite local directory '/opt/module/datas/export/student'
select * from student; -- 将查询的结果格式化导出到本地
insert overwrite local directory '/opt/module/datas/export/student1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student; -- 将查询的结果导出到HDFS上(没有local)
insert overwrite directory '/user/nty/student2'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;

2. Hadoop命令导出到本地

dfs -get /user/hive/warehouse/student/month=/000000_0 /opt/module/datas/export/student3.txt;

3. Hive Shell 命令导出

bin/hive -e 'select * from default.student;' > /opt/module/datas/export/student4.txt;

4. Export导出到HDFS上

export table default.student to '/user/hive/warehouse/export/student';

三. 清除数据(Truncate)

truncate table student;

Truncate只能删除管理表,不能删除外部表中数据

Hive(6)-DML数据操作的更多相关文章

  1. HIVE之 DDL 数据定义 & DML数据操作

    DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create dat ...

  2. hive从入门到放弃(三)——DML数据操作

    上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...

  3. Oracle基础(十) DML数据操作

    一.DML数据操作语言 主要用于检索.插入和修改数据库信息.它是最常用的SQL命令,如INSERT(插入).UPDATE(更新).SELECT(选择).DELETE(删除). 1.INSERT插入语句 ...

  4. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  5. DML数据操作语言

    DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...

  6. Hive[5] HiveQL 数据操作

    5.1 向管理表中装载数据   Hive 没有行级别的数据插入更新和删除操作,那么往表中装载数据的唯一途径就是使用一种“大量”的数据装载操作,或者通过其他方式仅仅将文件写入到正确的目录下:   LOA ...

  7. DML数据操作语言之增加,删除,更新

    1.数据的增加 数据的增加要用到insert语句  ,基本格式是: insert into <表名> (列名1,列名2,列名3,......) values (值1,值2,值3,..... ...

  8. Hive DDL DML SQL操作

    工作中经常要用到的一些东西,一直没整理,用的多的记住了,用的不多的每次都是去查,所以记录一下. DDL(数据定义语言),那就包括建表,修改表结构等等了 建表:create hive table hiv ...

  9. DML数据操作语言之复杂查询

    1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...

随机推荐

  1. css positioning计算和jquery对应函数

  2. IE浏览器 div或者其他容器的height属性无效 滚动条问题解决办法

    1.height设置定值是功能好使的  但是如果在不同分辨率的电脑上运行程序 会出现样式上的偏差 2.height的百分比是根据父级来的  所以将父级的height设置好(如果当前容器上方有很多父级 ...

  3. mysql获取表列信息、主键信息

    /** * 获取物理表中已存在的列信息 * @param tbName 表名 * @return results 查询结果 */ fun getExistColumnInfo(tbName:Strin ...

  4. 二叉树的二叉链表存储结构及C++实现

    前言:存储二叉树的关键是如何表示结点之间的逻辑关系,也就是双亲和孩子之间的关系.在具体应用中,可能要求从任一结点能直接访问到它的孩子. 一.二叉链表 二叉树一般多采用二叉链表(binary linke ...

  5. Eigen参考资料

    Getting started https://eigen.tuxfamily.org/dox/GettingStarted.html long tutorial https://eigen.tuxf ...

  6. February 4 2017 Week 5 Saturday

    It takes a great man to be a good listener. 懂得倾听的人才是真的了不起. Don't make comments before you have learn ...

  7. 容器,Docker, Kubernetes和Kyma,以及Kyma对SAP的意义

    大家好,今天非常高兴能给大家做一个关于Kyma的技术分享.这个session的audience主要是针对使用咱们成都研究院使用Java和nodejs等技术栈做微服务开发的同事们.对于在ABAP net ...

  8. UVa 10384 - The Wall Pushers

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. BZOJ1614:[USACO]Telephone Lines架设电话线(二分,最短路)

    Description FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司 支付一定的费用.FJ的农场周围分布着N(1<=N< ...

  10. CF739B Alyona and a tree

    嘟嘟嘟 前缀和+倍增+树上差分 假设\(v\)是\(u\)子树中的一个点,那么\(u\)能控制\(v\)的条件是受\(v\)的权值的限制,而并非\(u\).因此我们就能想到计算每一个点的贡献,即\(v ...