Presto (Athena) 加载带有引号转义逗号的 CSV 文件
Presto (Athena) loading of a CSV file with quote-escaped commas
考虑 CSV 文件中的以下行:
1,0,True,"{""foo"":null,""bar"":null}",0,1
▲
突出显示的 ,
是 列的一部分 。即这个全文:" {""foo"":null,""bar"":null}"
是单列的值。然而,AWS Athena 将突出显示的 ,
解释为 列分隔逗号 ,错误地将文本拆分为多列。
我知道我可以将列分隔符更改为其他内容来避免此问题。我的问题是:这是 AWS Athena / Presto 中的错误吗?我怎样才能逃避这些逗号?
如果您的数据用双引号括起来,您需要使用 OpenCSVSerDe .
对于示例数据,以下 table 定义有效:
1,0,True,"{""foo"":null,""bar"":null}",0,1
如何转义数据中的逗号
CREATE EXTERNAL TABLE `extra_comma`(
`a` string COMMENT 'from deserializer',
`b` string COMMENT 'from deserializer',
`c` string COMMENT 'from deserializer',
`d` string COMMENT 'from deserializer',
`e` string COMMENT 'from deserializer',
`f` string COMMENT 'from deserializer'
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://aws-glue-Whosebug/comma_in_data/'
考虑 CSV 文件中的以下行:
1,0,True,"{""foo"":null,""bar"":null}",0,1
▲
突出显示的 ,
是 列的一部分 。即这个全文:" {""foo"":null,""bar"":null}"
是单列的值。然而,AWS Athena 将突出显示的 ,
解释为 列分隔逗号 ,错误地将文本拆分为多列。
我知道我可以将列分隔符更改为其他内容来避免此问题。我的问题是:这是 AWS Athena / Presto 中的错误吗?我怎样才能逃避这些逗号?
如果您的数据用双引号括起来,您需要使用 OpenCSVSerDe .
对于示例数据,以下 table 定义有效:
1,0,True,"{""foo"":null,""bar"":null}",0,1
如何转义数据中的逗号
CREATE EXTERNAL TABLE `extra_comma`(
`a` string COMMENT 'from deserializer',
`b` string COMMENT 'from deserializer',
`c` string COMMENT 'from deserializer',
`d` string COMMENT 'from deserializer',
`e` string COMMENT 'from deserializer',
`f` string COMMENT 'from deserializer'
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://aws-glue-Whosebug/comma_in_data/'