hive--数据操作(数据导入导出)

本文详细介绍了Hive中的数据导入和导出方法,包括从本地和HDFS导入数据到Hive表,以及如何使用SQL语句进行数据导入。同时,文章也讲解了如何从Hive表导出数据到本地目录,以及如何根据分区字段导出不同分区的数据。

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

数据导入

向表导入数据

 load data [local] inpath 'hdfs://master:9000/xx/[文档]' [overwrite] into table 表
  注意:如果表有分区,load data [local] inpath 'hdfs://master:9000/xx/[文档]'  [overwrite] into table 表 partition(year=2014,month=12)

从本地数据导入hive中

create table t_name(name string,age int,sex string);

load data location inpath '/home/hadoop/logs/aaa.log' into table t_name;

从HDFS导入数据到hive中

create table t_name(name string,age int,sex string);

load data  inpath '/home/hadoop/logs/aaa.log' into table t_name;

导入分区表:

load data location inpath '/home/hadoop/logs/aaa.log' into table t_name partiton(分区字段名='分区字段内容');

从hive表导入hive表中:

通过查询导入数据

create table t_name(name string,age int,sex string);

insert into table t_name select a_name,a_age,a_sex from 数据库名 group by 字段;

  案例1:如果表有数据,删除在插入
  insert overwrite table 表名
  [partition(year=2014,month=12)]  
  select 子句
  
  案例2:使用insert into追加记录
  hive>  insert into table mytemp
      >  select empno,ename from emp limit 5;

向person表不同分区插入数据------静态分区

from tp 
insert overwrite table person 
partition(xb='male') 
select * where sex='男' 
insert overwrite table person 
partition(xb='female') 
select * where sex='女' ;

动态分区插入
  要求原始表有分区字段;
  动态分区插入语句,会将原始表按分区在新表中插入数据
  语法:
    insert overwrite table 新表(字段名,不包含分区名)
      partition(新表分区字段)
      select 原始表字段,别名.分区字段 from 原始表 
    执行成功后,
       会根据原始表分区字段在新表中按对应分区插入数据;
       
    注意:
      动态分区要求在使用时必须设置set hive.exec.dynamic.partition.mode=nonstrict;
      属性。

动态和静态结合
   语法:
     insert overwrite table 新表 (字段名,不包含分区名)
        partition(静态分区='初始值',动态分区名)
       select 原始表字段,别名.对应静态分区字段,别名.对应动态分区字段 from 原始表 别名
        where 别名.静态分区字段=初始值      

通过select子句创建新表
  语法 :
     create table 新表名称
     as 
     select 列名,... from 源表;
    
总结:
   hive不支持行级别 更新,删除

导出hive数据


导出hive表数据到本地目录
语法:
   insert overwrite local directory '/本地路径'  select 子句

insert [overwrit] local directory '本地路径' select 字段名..... from 表名 where 条件;
注意:
   导出数据前目录要存在;

将表中不同分区的数据导出到本地不同的目录下
 from 源表
  insert overwrite local directory '/本地目录的绝对路径'
  select 字段名  where  分区字段1=值1
  insert overwrite local directory '/本地目录的绝对路径'
  select 字段名  where  分区字段1=值2
  insert overwrite local directory '/本地目录的绝对路径'
  select 字段名  where  分区字段1=值3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值