Hive DML(一)

load 加载
语法:

> load data [local] inpath '数据的 path' [overwrite] into table 
student [partition (partcol1=val1,)];

接下来来个例子:

load data local inpath "/opt/module/hive/student.txt" into table table_name;

这是通过本地路径上传文件 同时本地文件上传会更改元数据中的filenum 但是不会更改rownum 因为load不会对文件进行读取 所以不知道文件中具体由多少行数据 所以通过select count(*) from table_name 的sql语句会走mr程序

load data inpath "/student.txt" into table table_name;

而去掉local则说明是从hdfs中拿取数据的 只是更改元数据中的映射地址 其他通通不改 因此传输速度是快于本地上传的

insert

insert into||overwrite table_name values(column_need);

不过实际开发中这种用法比较少通常是从别的表中拿取数据写入新表中的 且insert会走mr 也会改动matastore中的filenum和rownum
来个例子

insert into||overwrite table_name
select id,class from need_table_name;

as select
tip:属于建表语句

create table table_name as select column_name from 
need_table_name;

创建完数据库后 会导入查询所找的数据库 同时也会走mr程序
location

顾名思义 自定数据库在hdfs中的路径

create table table_name location "/xxxx";

数据导出

insert overwrite local directory
"input_path" [row format delimted fields terminated by "\t" select * from table_name;

导出数据到本地 若去除local关键字 则是导入数据到hdfs中
由于会走mr 所以可以传入hdfs时可以不用提前创建目标文件夹

export import
(了解)

export table table_name to "hdfs_path";
import table table_name from "hdfs_path";

tip:需要先进行export导出到hdfs才可以通过import导入到表中 且导入的表需要为空 或者不存在
主要用于两个hadoop集群平台之间相互传输

truncat

truncat table table_name

用于删除hdfs中的表 注意:Truncate 只能删除管理表,不能删除外部表中数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值