hive数据导入导出

---------------数据导入导出------------------------------
创建表:

CREATE TABLE IF NOT EXISTS userses(
name string,
sex string
)
row format delimited fields terminated by'\t';
CREATE TABLE IF NOT EXISTS user_tmp(
name string,
sex string
)
partitioned by(age int)
row format delimited fields terminated by'\t';

一、数据导入部分:
(1)、总所周知,hive本身并没有严格的数据格式。
Hive导入数据的四种方式:(肯定不只四种)
简单介绍四种:
1、从本地文件系统中导入数据到Hive表(数据copy过程):

  load data local inpath '/hivedata/user.txt' into table user;

2、从HDFS上导入数据到Hive表(从hdfs导入数据到Hive中,是一个数据移动过程!)

 load data inpath '/user.txt' into table user;

3、从别的表中查询出相应的数据并导入到Hive表中

insert into table user_tmp select * from user;

4、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。

create table userses_tmp as select * from userses;
create table userses_tmp2 as select name from userses where sex='nan';

5、创建表时跟上 location “hdfs上的目录input”

CREATE TABLE IF NOT EXISTS user_tmp3(
name string,
sex string
)
row format delimited fields terminated by'\t'
location '/input';
Hvie时读时模式!!!!

二、数据导出部分:
1、Hive导出数据的三种方式:
根据导出的地方不一样,将这些方式分为三种:
(1)、导出到本地文件系统(保存hive查询结果);

insert overwrite local directory'/home/hadoop/outdir' select* from userses;

导出数据时指定分隔符:

insert overwrite local directory'/root/outdir' row format delimited fields terminated by '\t' select* from userses;

注意:
在Hive 0.11.0版本之前,数据的导出是不能指定列之间的分隔符的,只能用默认的列分隔符。
所以到处数据时数据默认分隔符是^A(不指定分隔符时到处数据时可以看看)。
在Hive0.11.0版本新引进了一个新的特性,也就是当用户将Hive查询结果输出到文件,用户可
以指定列的分割符,而在之前的版本是不能指定列之间的分隔符。

如若表有 基本类型和复合数据类型!

   insert overwrite directory'/hivedata/user.txt' into table user
     row format delimited fields terminated by '\t'
     collection items terminated by','
     map keys terminated by':'
     select* from userses;
	 
	 直接在Linux终端执行(把数据导出到本地系统):
	 hive -S -e 'select * from hive_db.userses'>>/home/hadoop/hivedata/logsdir/users.txt;

	 //shell脚本封装执行
	 #!/bin/bash
     HQL="insert overwrite local directory '/home/hadoop/hivedata/logsdir' select log from reglog;"
     hive -S -e "$HQL" 	 

(2)、导出到HDFS中

insert overwrite directory'/out01' select* from userses;

(3)、导出到Hive的另一个表中这也是Hive的数据导入方式.

 insert into table user_tmp select * from user;
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值