将数据从csv文件中的字符串转换为Hive表中的bigint

时间:2014-04-03 17:39:25

标签: hive hdfs

我有一个csv文件,其中amount字段是一个字符串。在加载到表中时,我想将其转换为Bigint。我知道我可以进行强制转换(column_name为BIGINT)但是我应该在哪个阶段进行转换?

我尝试创建数据类型为Bigint的表并加载文件。当我查询它时,由于数据类型不匹配,我得到null。

如果有人可以告诉我如何转换它以及在什么阶段,那将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果csv的金额字段为字符串,则表示您的数据将在双引号" 12345" 内。 因此,在这种情况下,您无法将数据加载为 int / bigint 。因为当您运行LOAD命令时,您无法对列的数据类型进行任何修改。

There are two ways of doing this:

1.) Make your data(amount field) in csv as normal value instead of keeping it as string field.
    Then load your data into the table.

2.) First load your data as string field, then create another table with amount field as int/bigint then do:

插入new_table选择col1,col2..cast(coln as bigint).. colm from old_table

希望这有助于...... !!!

答案 1 :(得分:0)

尝试使用强制转换为无符号整数,例如

  

CAST(col_name AS UNSIGNED INTEGER)