Hive表中的数据不能通过insert语句插入,而是load data语句进行加载,其中加载的数据来源主要包括:
1、本地文件系统加载数据 2、HDFS文件系统加载数据
load data [local] inpath 'filePath' [overwrite] into table tableName
目录
1 admin 管理员 男 2 wangyuyan 王语嫣学霸 女 3 zhaolinger 赵灵儿玲珑天女 女 4 xiaolongnv 杨过的姑姑 女
使用XFTP在【/opt/temp】下上传【info.txt】信息文件
load data local inpath '/opt/temp/info.txt' overwrite into table users;
引入数据成功:
导入完成查询一下看看:
select * from users;
上传完成后可以在:【/user/hive/warehouse/mytest.db/users】看到【info.txt】文件
注:清空表数据语法结构
truncate table table_name;
注意改一下table_name的名称即可。
首先要从hive中退出来,使用【exit;】即可
换个文件【hadoopInfo.txt】
1 文鸯 大将军 男 2 满宠 装逼死得快 男 3 李进 打跑吕布不用怕 男 4 花木兰 巾帼英雄 女
这里使用【put】上传
hadoop fs -put /opt/temp/hadoopInfo.txt /
上传成功:
引入数据
load data inpath '/hadoopInfo.txt' into table users;
select * from users;
上传成功
这里应该先删除数据再引入,或者是使用【overwrite】重写的这个关键字。
这里演示一下删除后再引入的操作:
重新引入一下:
先删除
truncate table users;
退出并重新添加数据:
exit;
上传数据:
hadoop fs -put /opt/temp/hadoopInfo.txt /
再次进入hive
use mytest;
show tables;
load data inpath '/hadoopInfo.txt' into table users;
引入成功:
【overwrite】重写:
load data local inpath '/opt/temp/info.txt' overwrite into table users;
两种引入的语法对比:
load data inpath '/hadoopInfo.txt' into table users;
load data local inpath '/opt/temp/info.txt' overwrite into table users;
很明显的可以看到是是否有【local】,也就是是否声明使用本地呗,如果不使用本地,默认的就是使用【HDFS】上面的数据了。