2017-11-10 119 views
1

我这里有AWS雅典娜无法为.csv整数转换为表值

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

一个简单的CSV文件,我上传到AWS的S3桶。然后,使用雅典娜,我创建了一个表

  • 正确的S3存储路径
  • 格式为* .csv数据formt
  • 列,name string, age int, gender string, consumed int

表创建成功,但是当我查询它只有namegender在那里。所有条目的列为ageconsumed。有任何想法吗?

+0

描述表显示是什么? http://docs.aws.amazon.com/athena/latest/ug/ddl/describe-table.html –

+0

'名\t string' '年龄\t int' \t '性别\t string' \t '消耗\t INT ' –

+0

请发布DESCRIBE的实际输出。还发布您正在运行的查询。 –

回答

1

空格是没有得到您想要的值定义的数据类型的原因。只是为了测试的摇动,尝试制作一切字符串并打印它们,您也会在打印的值中看到空格。

我的第一选择是从数据本身中删除空格。但是,如果从数据中删除空格不是微不足道的,您可以保持原样,并将这些列创建为字符串。然后你可以在内部将它们转换为int,方法是首先删除所有空格,然后转换为int。例如,

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

替换将从您的字符串中删除所有空白。然后强制转换将字符串转换为整数。 消耗可以做同样的事情。