HIVE入门_3_数据导入导出

数据导出方式

导出到本地文件系统

hive> insert overwrite local directory '/home/wyp/wyp'
    > row format delimited
    > fields terminated by '\t'
    > select * from wyp;

hive -e "select * from wyp" >> local/wyp.txt

cat wyp.sql
#select * from wyp
hive -f wyp.sql >> local/wyp2.txt

导出到HDFS上

hive> insert overwrite directory '/home/wyp/hdfs'
    > select * from wyp;

导出到HIVE的另一个表中

hive> insert into table test
    > partition (age='25')
    > select id, name, tel
    > from wyp;

数据导入方式

从本地文件导入

hive> create table wyp
    > (id int, name string,
    > age int, tel string)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '\t'
    > STORED AS TEXTFILE;

cat wyp.txt
#1       wyp     25      13188888888888
#2       test    30      13888888888888

load data local inpath 'wyp.txt' into table wyp;

dfs -ls /user/hive/warehouse/wyp ;

从HDFS上导入

从本地文件系统将数据导入到HIVE表的过程中,其实是现将数据临时复制到HDFS下面的一个目录,然后再将数据从临时目录下移动到对应HIVE表的数据目录中。 因此,HIVE也支持将数据直接从HDFS上的一个目录移动到相应HIVE表的目录中去。

和本地文件系统导入的区别只是是否有inpath

load data inpath '/home/wyp/add.txt' into table wyp;

创建表后从别的表查询出的相应数据导入

hive> create table test(
    > id int, name string
    > ,tel string)
    > partitioned by
    > (age int)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '\t'
    > STORED AS TEXTFILE;

hive> insert into table test
    > partition (age='25')
    > select id, name, tel
    > from wyp;

##动态指明分区
hive> set hive.exec.dynamic.partition.mode=nonstrict;
hive> insert into table test
    > partition (age)
    > select id, name,
    > tel, age
    > from wyp;

#overwrite方式重写原来的数据
hive> insert overwrite table test
    > PARTITION (age)
    > select id, name, tel, age
    > from wyp;

#多表插入,只需要扫描一遍数据生成需要的各种表
hive> from wyp
    > insert into table test
    > partition(age)
    > select id, name, tel, age
    > insert into table test3
    > select id, name
    > where age>25;

创建表的时候通过别的表查询记录插入

hive> create table test4
    > as
    > select id, name, tel
    > from wyp;

参考资料

  1. 过往记忆的blog

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Pythonista

Django开发问题及解决方法汇总

NameError: name 'reload' is not defined报错

1285
来自专栏Spark学习技巧

干货:Sqoop导入导出数据练习

sqoop简介 1,sqoop:sql-to-hadoop, sqoop是连接关系型数据库和hadoop的桥梁: (1),把关系型数据库的数据导入到hadoo...

58010
来自专栏云计算爱好者

你常用的10个MySQL命令

今天给大家介绍一些简单的MySQL常用的实用命令。如果你已经熟练使用MySQL就可以跳过啦!如果还不知道的都可以在自己机器上练习一下。

1697
来自专栏Hongten

php开发_链接mysql数据库的一个类

644
来自专栏用户2442861的专栏

基于bootstrap的web登陆实例

前情提要 之前已经搭好的springMVC+myBatis项目骨架,详情请看–>传送门。

1191
来自专栏杨建荣的学习笔记

关于创建索引的ora问题 (96天)

创建index的时候,报了如下的错误。让人有些摸不着头脑。 create unique index t_pk on t(object_id,object_nam...

2747
来自专栏岑玉海

Hbase 学习(十一)使用hive往hbase当中导入数据

  我们可以有很多方式可以把数据导入到hbase当中,比如说用map-reduce,使用TableOutputFormat这个类,但是这种方式不是最优的方式。 ...

37813
来自专栏张戈的专栏

MySQL错误修复记录:Table xx is marked as crashed and should be repaired

昨晚入睡后,收到松哥的 QQ 消息,说松松商城打开报错,于是手机 QQ 上打开了首页地址,发现有如下报错: ? MySQL server error repor...

39111
来自专栏Pulsar-V

C# SQLite配置

首先下载SqlLite的官方驱动库,因为C#并不带有SqlLite的驱动 SqlLite库 注意:严格下载SqlLite的版本和.Net版本,需要在建立项目的时...

3476
来自专栏Hadoop实操

如何向Hive表加载数据

使用追加的方式将test_user表中id大于3并且小于5的数据插入到my_table表中,执行结果如下:

4306

扫码关注云+社区