Hive(6)-DML数据操作
一. 数据导入
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数据操作的更多相关文章
- HIVE之 DDL  数据定义 & DML数据操作
		
DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create dat ...
 - hive从入门到放弃(三)——DML数据操作
		
上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...
 - Oracle基础(十) DML数据操作
		
一.DML数据操作语言 主要用于检索.插入和修改数据库信息.它是最常用的SQL命令,如INSERT(插入).UPDATE(更新).SELECT(选择).DELETE(删除). 1.INSERT插入语句 ...
 - 6.1课堂笔记—DML(数据操作语言),DQL查询语句
		
一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...
 - DML数据操作语言
		
DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...
 - Hive[5] HiveQL 数据操作
		
5.1 向管理表中装载数据 Hive 没有行级别的数据插入更新和删除操作,那么往表中装载数据的唯一途径就是使用一种“大量”的数据装载操作,或者通过其他方式仅仅将文件写入到正确的目录下: LOA ...
 - DML数据操作语言之增加,删除,更新
		
1.数据的增加 数据的增加要用到insert语句 ,基本格式是: insert into <表名> (列名1,列名2,列名3,......) values (值1,值2,值3,..... ...
 - Hive DDL DML SQL操作
		
工作中经常要用到的一些东西,一直没整理,用的多的记住了,用的不多的每次都是去查,所以记录一下. DDL(数据定义语言),那就包括建表,修改表结构等等了 建表:create hive table hiv ...
 - DML数据操作语言之复杂查询
		
1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...
 
随机推荐
- js 生成md5
			
原理比较复杂,不过人类区别与其他动物是因为会用工具,所以,把下面代码复制保存一下就好了. <script> var hex_chr = "0123456789abcdef&quo ...
 - Azkaban调度器
			
Azkaban介绍 Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Azkaban 使用 job 配置文件建立任务之间 ...
 - sqlserver根据条件生成插入语句--单表
			
ALTER proc [dbo].[proc_insert] (@tablename varchar(256),@where varchar(max))asbeginset nocount ondec ...
 - [翻译] iOS开发工具的介绍(第一部分)
			
IOS DEVELOPMENT TIPS & TRICKS - PART I http://blog.trifork.com/2013/12/19/ios-development-tips-t ...
 - January 14 2017 Week 2nd Saturday
			
Don't try so hard, the best things come when you least expect them to. 不要着急,最好的总会在最不经意时出现. The secon ...
 - Json.Net 中Linq to JSON的操作
			
Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和 ...
 - SAP C/4HANA Sales Cloud使用OData服务和第三方系统集成的一个具体例子
			
出于工作需要,Jerry写了这篇文章,给某些Partner做参考. 以前Jerry曾经介绍过SAP C/4HANA的五朵云到底包含哪些具体产品,其实在SAP官网上有更权威的中文解释: https:// ...
 - tftp传输可执行程序问题
			
昨天搭建了板子从nfs系统启动,这样只要在开发机上编写程序编译,就可以在板子上测试运行了,编写了hello world 程序,用arm编译器编译,在主板上运行,提示出错:什么exception ((什 ...
 - how to design Programs 学习笔记
			
how to design Programs 学习笔记 */--> how to design Programs 学习笔记 目录 1. 前言 1.1. 系统化程序设计 1.2. 输入和输出 2. ...
 - 关于使用eclipse maven UpdateProject时报错,无法更新本地仓库的问题解决方案
			
在做项目中,需要从同事电脑中把Maven项目copy过来,但是copy的过程中只copy了代码,setting.xml文件和pom.xml,使用eclipse把项目导入,有红色的感叹号提示,由于我没有 ...