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

使用S3 Bucket中CSV文件在AWS Athena创建表时遇语法错误

问题分析与解决

错误原因

你遇到的报错mismatched input 'ROW'. Expecting: 'COMMENT', 'WITH', <EOF>,是因为当前Athena默认使用ANSI SQL解析模式,该模式不兼容Hive风格的ROW FORMAT语法;同时你用双引号包裹数据库和表名的写法,会触发ANSI模式解析,导致后续Hive语法关键字无法被识别。

两种解决方法

方法1:改用Athena原生ANSI SQL语法建表

这种写法更贴合Athena的原生支持,无需依赖Hive SerDe:

CREATE TABLE IF NOT EXISTS "database"."tablename" (
    column1 INT,
    column2 INT,
    column3 INT
)
WITH (
    external_location = 's3://s3-path/',
    format = 'csv',
    field_delimiter = ','
);

方法2:兼容Hive语法(移除标识符双引号)

如果要继续使用Hive风格的SerDe语法,只需去掉数据库和表名的双引号(Athena默认不区分大小写,小写标识符无需引号),解析器会自动切换到Hive兼容模式:

CREATE TABLE IF NOT EXISTS database.tablename (
    column1 INT,
    column2 INT,
    column3 INT
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('field.delim' = ',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://s3-path/'
TBLPROPERTIES ('classification' = 'csv');

额外提示

  • 若数据库或表名包含特殊字符、空格或大写字母,必须保留双引号,此时只能使用方法1的ANSI语法。
  • 建表前确认Athena服务角色拥有目标S3路径的读写权限。

内容的提问来源于stack exchange,提问作者Rishabh Goel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:52:40