1. 程式人生 > >關於sqoop導入數據到hive數據庫當中,表中數據為空倒入hive當中的處理

關於sqoop導入數據到hive數據庫當中,表中數據為空倒入hive當中的處理

轉化 hive數據庫 是不是 技術 關於 trim 如果 col 去掉

今天在hive數據庫當中查詢一張表,查詢數據為空的值,但是死活就是匹配不到:

查詢語句如下:

select * from loan_repayment_detail  where trim(fact_return_date) is null
本來想著是不是因為前面有空格的原因,但是去掉了空格之後還是不可以。

技術分享圖片

我直接插尋這個字段是有值的啊,也是為null,為啥就不可以啊。原來真正的問題的源頭是從我們使用sqoop導入數據開始的。在sqoop導入數據的時候如果不對null做處理,他會將原來為null的值導入的時候

轉化為null的字符串,不是真正意義上面的null值。所以當我們使用is null 的時候就匹配不到數據。這才是問題的關鍵:

然後我執行了一下下面這個語句就可以了:

技術分享圖片

所以我們在通過sqoop導入數據的時候,需要加上

--null-string ‘\\N‘

--null-non-string ‘\\N‘

這個是因為在hive裏面的,null值是用\N來表示的,所以需要將原理啊的null的字符串進行轉換之後,才能匹配到真正意義上的null值,而不是字符串類型的null值。

至此問題得到了解決。

關於sqoop導入數據到hive數據庫當中,表中數據為空倒入hive當中的處理