如何将Snowflake导出的NDJSON转为JSON数组并保存为单个文件?
解决Snowflake卸载JSON数组格式数据到S3的问题
要将Snowflake中的数据卸载为单个JSON数组格式的文件,而非默认的NDJSON,你需要调整查询逻辑,把每行生成的JSON对象聚合为完整数组,同时确保输出为单个文件。
修改后的COPY语句
COPY INTO @MY_STAGE/path/my_filename.json FROM ( SELECT TO_JSON(ARRAY_AGG(OBJECT_CONSTRUCT(*))) AS json_array FROM my_table ) FILE_FORMAT = (TYPE = JSON COMPRESSION = NONE) OVERWRITE = TRUE SINGLE = TRUE; -- 强制生成单个输出文件
关键修改说明
- ARRAY_AGG(OBJECT_CONSTRUCT(*)):将
my_table每行转换后的JSON对象,聚合为Snowflake数组类型。 - TO_JSON():把聚合后的Snowflake数组转换为标准的JSON数组字符串。
- SINGLE = TRUE:强制Snowflake生成单个文件,避免数据被拆分为多个文件(若数据量超出默认文件大小限制,可搭配
MAX_FILE_SIZE参数调整上限)。
注意事项
如果表数据量极大,ARRAY_AGG可能因内存限制无法完成聚合(需将全量数据加载至内存)。这种场景下可考虑分批处理后在外部拼接数组,但常规规模数据使用上述方法即可满足需求。
内容的提问来源于stack exchange,提问作者user6308605
相关产品推荐
相关产品推荐

