2014-07-14 87 views
2

我在配置單元中創建表;將值從字符串轉換爲int中的int

create table patients(
    patient_id INT, 
    age_group STRING, 
    gender STRING, 
    income_range STRING 
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '; 

load data local inpath '/mnt/patients.csv' into table patients; 

現在,當我使用命令:

hive>select * from patients limit 5; 

我得到的輸出:

NULL 75-84, F,  32000-47999 
NULL 75-84, M,  16000-23999 
NULL 85+, M,  <16000 
NULL 65-74, F,  32000-47999 
NULL <65, M,  <16000 

但是,當我使用分配patient_id作爲串中的表現:

910997967,  75-84, F,  32000-47999 
506013497,  75-84, M,  16000-23999 
432041392,  85+, M,  <16000 
633048699,  65-74, F,  32000-47999 

我試過使用:

hive>select CAST(patient_id AS int) from patients; 

但它不改變的值,以int和只顯示

NULL 
NULL 
... 

怎麼能patient_id的值可以被轉換成int值?

感謝

+1

看來你有一個逗號作爲數據的一部分。我建議在將數據加載到表格中時照顧它。一旦逗號從字符串中刪除,「CAST」將正常工作。 – visakh

+0

首先確保你使用的分隔符是正確的w.r.t你的csv文件。 其次檢查你的csv文件中的int/double/float值,它們不應該在文件中有**「」**。 就你的情況而言,@visakh指出分隔符的問題似乎存在。 –

+0

@visakh:非常感謝。你的觀察幫助了我 – user2876812

回答