我想以 CSV 以外的格式存储 Amazon Athena 查询结果,例如 JSON 或 Parquet。
简短描述
运行 SELECT 查询时,Athena 仅支持 CSV 格式的输出文件。要以 CSV 以外的格式存储 Athena 的输出,请选择以下选项之一:
UNLOAD 语句以几种不同的数据格式写入 SELECT 查询的输出,但不创建新表。CTAS 查询也会以不同的数据格式写入输出,但会使用该输出创建一个新表。UNLOAD 和 CTAS 都支持 Apache Parquet、ORC、Apache Avro 和 JSON 等格式。
**注意:**UNLOAD 和 CTAS 都支持分区,但只有 CTAS 支持分桶。
解决方法
运行 UNLOAD 查询
要使用 UNLOAD 语句,请将您的 SELECT 查询放在 UNLOAD 后的括号中,并在 WITH 语句中指定文件类型。例如,以下查询将 SELECT 的输出作为 JSON 文件保存在 Amazon Simple Storage Service (Amazon S3) 存储桶 amzn-s3-example-bucket 中:
UNLOAD (SELECT col1, col2 FROM example_table)
TO 's3://amzn-s3-example-bucket/example_folder/'
WITH (format = 'JSON')
有关如何修改 UNLOAD 输出的更多信息,请参阅参数。
运行 CTAS 查询
要以 CSV 以外的格式存储 CTAS 查询的输出,请在 WITH 语句中配置格式属性。例如,以下查询根据 SELECT 返回的数据,以 Parquet 格式创建一个名为 ctas-parquet-example 的新表:
`CREATE TABLE ctas_parquet_example WITH (format = '`_`PARQUET`_`') AS SELECT col1, col2, FROM example_table;`
有关 CTAS 参数的更多信息,请参阅 CTAS 表属性。
如果您只需要保留输出数据文件而不保留新表,则在查询完成后删除 CTAS 表。
相关信息
CTAS 查询的注意事项和限制
CTAS 查询的示例