Amazon web services 读取AWS athena中值包含逗号的csv文件
嗨,目前我已经在AWS Athena中创建了一个表模式,如下所示Amazon web services 读取AWS athena中值包含逗号的csv文件,amazon-web-services,amazon-s3,amazon-athena,Amazon Web Services,Amazon S3,Amazon Athena,嗨,目前我已经在AWS Athena中创建了一个表模式,如下所示 CREATE EXTERNAL TABLE IF NOT EXISTS axlargetable.AEGIntJnlActivityLogStaging ( `clientcomputername` string, `intjnltblrecid` bigint, `processingstate` string, `sessionid` int, `sessionlogindatetime` string,
CREATE EXTERNAL TABLE IF NOT EXISTS axlargetable.AEGIntJnlActivityLogStaging (
`clientcomputername` string,
`intjnltblrecid` bigint,
`processingstate` string,
`sessionid` int,
`sessionlogindatetime` string,
`sessionlogindatetimetzid` bigint,
`recidoriginal` bigint,
`modifieddatetime` string,
`modifiedby` string,
`createddatetime` string,
`createdby` string,
`dataareaid` string,
`recversion` int,
`partition` bigint,
`recid` bigint
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = ',',
'quoteChar' = '\"',
'escapeChar' = '\\'
)
LOCATION 's3://ax-large-table/AEGIntJnlActivityLogStaging/'
TBLPROPERTIES ('has_encrypted_data'='false');
但其中一个字段(processingstate)值包含逗号“Europe、Middle East和Africa”,它按顺序替换列
那么,阅读此文件的最佳方式是什么呢。谢谢作为解决办法-看看aws glue项目 不是通过
创建外部表来创建表
:
StorageDescriptor
部分:
{
“存储描述符”:{
“SerdeInfo”:{
“序列化库”:“org.apache.hadoop.hive.serde2.OpenCSVSerde”
...
}
...
}OpenCSVSerde
,则可以修复此问题,您可以简单地重新创建此表当我取下这个零件时
WITH SERDEPROPERTIES (
'separatorChar' = ',',
'quoteChar' = '\"',
'escapeChar' = '\\'
)
我能够读取带逗号的引用文本这是一种常见的混乱CSV文件情况,其中某些值包含逗号。雅典娜的解决方案是使用AWS文档中描述的SerdeProperty[url可能会更改,因此只需搜索“OpenCSVSerDe进行处理”] 以下是提供的基本创建表示例。根据您的数据,您必须确保正确指定了数据类型(例如字符串) 创建外部表test1( f1字符串, s2(字符串) 行格式SERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde' 使用SerdeProperty(“分离器“=”,“,”escapeChar“=”\”)
位置“s3://user test region/dataset/test1/”能否显示输入行的示例?具体来说,我们需要查看字符串字段是否用引号括起来。如果用引号括起来,它将读取整个字符串作为一个字段。尝试使用regEx-serde。这可能是可行的。您能分享一些示例记录吗?嗨,John,谢谢您的广告vice和你是对的,因为我的值被引用了,它应该正确显示。但是我发现问题出在下一列,但是我不知道为什么当显示错误消息时,它指向上一列。问题出在第3列而不是第2列。我现在已经解决了。