You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Athena查询部分值带引号的CSV时返回值含多余引号如何解决

解决方案

方案1:修改表SERDE配置(推荐,永久生效)

你当前的建表语句没有为OpenCSVSerde配置引号识别参数,该序列化器本身原生支持混合带引号/不带引号的CSV字段,只需补充SERDE属性即可自动解析去除包裹用的双引号:

CREATE EXTERNAL TABLE `weatherdata_output`(
  `name` string, 
  `state` string, 
  `lat` double, 
  `lng` double,
  ...)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
  "separatorChar" = ",",
  "quoteChar" = "\"",
  "escapeChar" = "\\"
)
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://<bucket>/output'
TBLPROPERTIES (
  'transient_lastDdlTime'='1630559293')

如果你不想重建表,也可以直接在AWS Glue控制台找到对应表,进入编辑页面,在「序列化库参数」中手动添加上述三个配置项,保存后立即生效。

方案2:查询时临时去除引号

如果不方便修改表结构,可以在查询时用trim函数去除字段首尾的双引号:

SELECT 
  trim('"' FROM name) AS name,
  trim('"' FROM state) AS state,
  lat,
  lng
FROM weatherdata_output

注意该方案仅适用于字段内容本身不会以双引号开头/结尾的场景。

补充说明

你之前查阅的相关方案没有限定必须所有字段带引号,OpenCSVSerde配置quoteChar后会自动识别所有被双引号包裹的字段并去除外层引号,不管其他字段是否带引号,完全适配你当前的CSV格式。


内容的提问来源于stack exchange,提问作者Simon Rex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:15:04