hive中建好表后,使用load命令从本地文件系统导入数据,去表中查全是null

本文详细解析了在Hive中创建表格并加载本地文件数据时遇到的问题,特别是关于字段分隔符的选择及其对数据加载的影响。

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

    hive中建了一张表,建表语句如下:

hive>create table user(
    > userid bigint,
    > username string,
    > age int,
    > sex tinyint,
    > address string
    > )row format delimited fields terminated by '\t';


   我使用的是从本地文件系统导入数据,导入语句为:

hive>load data local inpath '/home/lvyuan/temp/userinfo.data' overwrite into table user;

hive>select * from user;结果一查询全为null

问题就出在分隔符上,我的建表语句分隔符是'\t','\t’代表的是tab符号,你键盘上的tab键,如下图


之所以全是null,就是因为你在本地文件内容不是以tab符作为缩进的,所以它匹配不到

我没注意到,所以文件中数据都是以空格缩进的,难怪会错了

比如我的本地文件是user.data,里面内容以空格缩进的的话如下:

123  aa  2  0  hangzhou
245  bb  3  1  beijing
789  cc  2  0  shanghai
201  dd  3  1  guangzhou


以tab符缩进的的话如下:

123     aa      2       0       hangzhou
245     bb      3       1       beijing
789     cc      2       0       shanghai
201     dd      3       1       guangzhou

失之一毫,谬之千里,另外建表还支持以逗号、空格等分隔符,那么你文件中数据一定也要一逗号或者空格来缩进

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值