AWS Athena 无法将 .csv 整数转换为 table 值
AWS Athena unable to convert .csv integers to table values
我这里有一个简单的 csv 文件
Joe, 30, Male, 3
Winston, 40, Male, 7
Emily, 18, Female, 5
Wendy, 32, Female, 4
我上传到 AWS 上的 S3 存储桶。然后,使用 Athena,我创建了一个 table 和
- 更正 S3 存储桶路径
- .csv 作为数据格式
- 列为
name string, age int, gender string, consumed int
table创建成功,但查询时只有name
和gender
。所有条目的 age
和 consumed
列都是空的。有什么想法吗?
空格是无法在定义的数据类型中获得所需值的原因。只是为了测试的动摇,尝试将所有内容都变成字符串并打印它们,您也会在打印值中看到空格。
我的第一选择是从数据本身中删除空格。但是,如果从数据中删除空格不是微不足道的,您可以保持原样并使用这些列作为字符串创建 table。然后您可以通过首先删除所有空格然后转换为 int 在内部将它们转换为 int。例如,
select cast(replace(age, '<whitespace>') as int) from <tablename>
替换将从您的字符串中删除所有空格。然后 cast 会将字符串转换为整数。 consumed.
也可以这样做
我这里有一个简单的 csv 文件
Joe, 30, Male, 3
Winston, 40, Male, 7
Emily, 18, Female, 5
Wendy, 32, Female, 4
我上传到 AWS 上的 S3 存储桶。然后,使用 Athena,我创建了一个 table 和
- 更正 S3 存储桶路径
- .csv 作为数据格式
- 列为
name string, age int, gender string, consumed int
table创建成功,但查询时只有name
和gender
。所有条目的 age
和 consumed
列都是空的。有什么想法吗?
空格是无法在定义的数据类型中获得所需值的原因。只是为了测试的动摇,尝试将所有内容都变成字符串并打印它们,您也会在打印值中看到空格。
我的第一选择是从数据本身中删除空格。但是,如果从数据中删除空格不是微不足道的,您可以保持原样并使用这些列作为字符串创建 table。然后您可以通过首先删除所有空格然后转换为 int 在内部将它们转换为 int。例如,
select cast(replace(age, '<whitespace>') as int) from <tablename>
替换将从您的字符串中删除所有空格。然后 cast 会将字符串转换为整数。 consumed.
也可以这样做