关于sqoop导入数据到hive数据库当中,表中数据为空倒入hive当中的处理

今天在hive数据库当中查询一张表,查询数据为空的值,但是死活就是匹配不到:

查询语句如下:

select * from loan_repayment_detail  where trim(fact_return_date) is null
本来想着是不是因为前面有空格的原因,但是去掉了空格之后还是不可以。

关于sqoop导入数据到hive数据库当中,表中数据为空倒入hive当中的处理

我直接插寻这个字段是有值的啊,也是为null,为啥就不可以啊。原来真正的问题的源头是从我们使用sqoop导入数据开始的。在sqoop导入数据的时候如果不对null做处理,他会将原来为null的值导入的时候

转化为null的字符串,不是真正意义上面的null值。所以当我们使用is null 的时候就匹配不到数据。这才是问题的关键:

然后我执行了一下下面这个语句就可以了:

关于sqoop导入数据到hive数据库当中,表中数据为空倒入hive当中的处理

所以我们在通过sqoop导入数据的时候,需要加上

--null-string '\N' 

--null-non-string '\N' 

这个是因为在hive里面的,null值是用N来表示的,所以需要将原理啊的null的字符串进行转换之后,才能匹配到真正意义上的null值,而不是字符串类型的null值。

至此问题得到了解决。