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

使用AWS Athena处理JSON文件:如何仅导出值而非列名?

解决AWS Athena UNLOAD导出JSON时去除列名键的问题

问题出在你使用了format = 'JSON'进行UNLOAD操作,Athena会自动将查询结果的每一行转换为包含列名作为键的JSON对象。要直接导出原始JSON字符串,不需要包裹列名,有两种可行方案:

方案一:改用TEXTFILE格式导出

这是最直接的方法,因为你的查询结果本身就是原始JSON字符串,使用TEXTFILE格式会直接输出每行的字符串值,不会添加任何JSON结构包裹:

UNLOAD (
  SELECT file_line 
  FROM json_based_table 
  LIMIT 10
) TO 's3://<results_bucket>/samples/' 
WITH (format = 'TEXTFILE');

导出的文件每行就是原文件中的JSON内容,不会带"file_line"键。

方案二:解析JSON后导出完整对象(适合需要结构化操作的场景)

如果需要先对JSON内容进行过滤或修改,可先解析字符串为JSON对象,再导出整个对象。此时仍需注意避免列名包裹,可结合TO_JSON_STRING和TEXTFILE:

UNLOAD (
  SELECT TO_JSON_STRING(JSON_PARSE(file_line)) 
  FROM json_based_table 
  -- 这里可以添加WHERE条件过滤JSON内容,比如:
  -- WHERE JSON_EXTRACT_SCALAR(file_line, '$.status') = 'success'
  LIMIT 10
) TO 's3://<results_bucket>/samples/' 
WITH (format = 'TEXTFILE');

这种方式适合需要先处理JSON内容再导出的场景,输出结果同样是纯JSON字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:55:17