hive中建好表后,使用load命令从本地文件系统导入数据,去表中查全是null
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
失之一毫,谬之千里,另外建表还支持以逗号、空格等分隔符,那么你文件中数据一定也要一逗号或者空格来缩进