代码之家  ›  专栏  ›  技术社区  ›  Yifei Xu

AWS雅典娜无法转换。csv整数到表值

  •  1
  • Yifei Xu  · 技术社区  · 7 年前

    我这里有一个简单的csv文件

    Joe, 30, Male, 3
    Winston, 40, Male, 7
    Emily, 18, Female, 5
    Wendy, 32, Female, 4
    

    我将其上传到AWS上的S3存储桶中。然后,我用雅典娜创建了一个表

    • 正确的S3铲斗路径
    • .csv作为数据格式
    • 列作为 name string, age int, gender string, consumed int

    该表已成功创建,但当我查询它时 name gender 有。列 age consumed 对于所有条目都为空。有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dhaval    7 年前

    空格是无法在定义的数据类型中获得所需值的原因。只是为了测试的抖动,尝试将所有内容都设置为字符串并打印出来,您也会在打印的值中看到空格。

    我的第一个选择是从数据本身中删除空格。但若从数据中删除空格并不是一件小事,那个么可以将它们保持原样,并将这些列作为字符串创建表。然后,您可以先删除所有空格,然后将其转换为int,从而在内部将其转换为int。例如,

    select cast(replace(age, '<whitespace>') as int) from <tablename>
    

    Replace将删除字符串中的所有空白。然后cast将字符串转换为整数。同样的道理也适用于 消耗 .