AWS Athena中更新含双引号列值,UPDATE操作是否不被支持?
AWS Athena是否支持UPDATE操作?
Athena默认不支持传统的UPDATE语句——它本质是基于S3的查询服务,底层常用的存储格式(如CSV、Parquet)都是不可变的,这类存储模型不支持行级修改操作,直接执行你提供的UPDATE语句会报错。
替代解决方案
如果需要清理user_id字段中的双引号,可采用以下两种方式:
1. 用CTAS语句生成处理后的新表
通过创建新表的方式将清洗后的数据写入,替代原表:
CREATE TABLE new_table_name WITH ( format = 'Parquet', -- 推荐使用Parquet/ORC这类高性能列式存储格式 external_location = 's3://your-bucket/path/to/new-table/' ) AS SELECT REPLACE(user_id, '"', '') AS user_id, -- 列出原表所有其他字段,比如col1, col2... col1, col2, col3 FROM "table_name";
完成后可删除原表,将新表重命名为原表名,或直接使用新表查询。
2. 使用Iceberg格式的ACID事务表
若你的表基于Apache Iceberg格式创建,Athena支持对这类表执行UPDATE、DELETE等DML操作。此时你提供的UPDATE语句可直接运行,但前提是表需为Iceberg格式并开启事务支持。
创建Iceberg表的示例:
CREATE TABLE iceberg_table_name ( user_id STRING, col1 STRING, col2 INT ) WITH ( table_type = 'ICEBERG', format = 'PARQUET', external_location = 's3://your-bucket/path/to/iceberg-table/', write_compression = 'SNAPPY' );
针对已存在的Iceberg表,执行你的UPDATE语句即可:
UPDATE "iceberg_table_name" SET user_id = REPLACE(user_id, '"', '');
内容的提问来源于stack exchange,提问作者DSi
相关产品推荐
相关产品推荐

