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/'