Hive 学习笔记

向Hive的表里insert 批量insert数据

通过本地文件直接导入

load data local inpath '/root/tmp_data.txt' overwrite into table t2;


先把本地文件上传到hdfs,再导入hive

hdfs dfs -put tmp_data.txt /user/root

load data inpath '/user/root/tmp_data.txt' overwrite into table t2;






参考文章

此处共有四种导入的形式:


1.通过外部表导入


用户在Hive上建有external表,建表的同时指定hdfs路径,在数据拷贝到指定hdfs路径的同时,也同时完成数据插入external表。
例如:


编辑文件test.txt
$ cat test.txt 
1       hello
2       world
3       test
4       case
字段之间以'\t'分割


启动hive
$ hive


建external表:
hive> CREATE EXTERNAL TABLE MYTEST(num INT, name STRING)
    > COMMENT 'this is a test'
    > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    > STORED AS TEXTFILE
    > LOCATION '/data/test';
OK
Time taken: 0.714 seconds


数据拷贝到hdfs:
$ Hadoop fs -put test.txt /data/test



2.从本地导入

数据不在hdfs上,直接从本地导入hive表


文件/home/work/test.txt内容同上


建表:
hive> CREATE TABLE MYTEST2(num INT, name STRING)
    > COMMENT 'this is a test2'                          
    > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'     
    > STORED AS TEXTFILE;                                
OK
Time taken: 0.077 seconds


导数据入表:
hive> LOAD DATA LOCAL INPATH '/home/work/test.txt' INTO TABLE MYTEST2;


注:此处默认是追加,如果想覆盖,先清空表在导入数据的话,需要加上overwrite 


hive> LOAD DATA LOCAL INPATH '/home/work/test.txt' OVERWRITE INTO TABLE MYTEST2;



3.从hdfs导入

上述test.txt文件已经导入/data/test

则可以使用下述命令直接将数据导入hive表:

hive> CREATE TABLE MYTEST3(num INT, name STRING)
    > COMMENT "this is a test3"
    > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    > STORED AS TEXTFILE;

hive> LOAD DATA INPATH '/data/test/test.txt' INTO TABLE MYTEST3;
Loading data to table default.mytest3



4. 从其它表导入数据:


hive> CREATE EXTERNAL TABLE MYTEST4(num INT) ;


hive> FROM MYTEST3 test3
    > INSERT OVERWRITE TABLE MYTEST4
    > select test3.num where name='world';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值