hive的数据操作

本文详细介绍了如何使用Hadoop命令和Hive SQL语句加载数据到Hive表中,包括内部表、外部表、分区表和分桶表的不同加载方式。同时,也讲解了如何将Hive数据导出到Linux系统或Hadoop文件系统,支持默认分隔符和自定义分隔符的导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加载数据

由于hive中的数据存储在HDFS上,只需将数据存储在hive表的目录下,完成映射即可。所以可以使用hadoop的命令来加载数据
使用"-put"加载数据

hadoop  fs -put '文件' '/user/hive/warehouse/数据库名.db/表名'	

使用"-mv|-cp"加载数据(只适用内部表和外部表)

hadoop fs -mv/-cp '文件路径'   '/user/hive/warehouse/数据库名.db/表名'

注:这两个命令只适用普通的内部数据表和外部数据表,不适用分区表和分桶表。

使用load加载数据

--加载数据到普通表
load data local inpath  '文件路径'  into table '表名'
--加载分区表
load data local inpath '文件路径' into table '表名' partition (pubid=1)

注:此命令只能在hive的交互式窗口中运行,他适用于内部数据表、外部数据表和分区表,但是加载分区表时,需要指明分区字段。

查询插入

hive中使用"insert…select"语法,将查询的结果插入到其他的数据表中;但是,数据表的结构要与查询的结果的结构完全对应,否则,会出现"null".

.多重插入(将同一个数据表中的不同字段,插入到不同的数据表中)

from student  
insert overwrite table student_id select id 
insert overwrite table student_name select name

注:数据表"student"中应"id"和"name"两个字段,将"id"插入到" student_id"表中,将"name"插入到" student_name"表中。

导出数据

以默认的分隔符将hive中的数据导出

insert overwrite local directory '目录地址'  select * from '数据表名';

注:“local"参数表示将数据导出到Linux系统中(本地),如果不写此参数,表示数据导出到hadoop文件系统中,并且此语句导出的数据的分隔符为默认分隔符(”\001")。

使用指定的分隔符将hive中的数据导出

insert overwrite local directory '目录地址' row format delimited fields terminated by char select * from '数据表名';

注:此语句指定以"char"为分隔符(如,"\t"、","等)将数据导出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值