繁体   English   中英

在 json 数组中从 Snowflake 复制 INTO

[英]COPY INTO from Snowflake in array of json

我有一个从 Snowflake 卸载到 S3 的复制语句。

COPY INTO @MY_STAGE/path/my_filename FROM (
SELECT OBJECT_CONSTRUCT(*) from my_table) 
FILE_FORMAT =(TYPE = JSON COMPRESSION = NONE)
OVERWRITE=TRUE;

myfilename.json中的当前结果:

  {
   "a": 123,
   "b": "def"
  }

  {
   "a": 456,
   "b": "ghi"
  }

使用OBJECT_CONSTRUCT()将生成ndjson格式。 但是,我想将文件保存在 json 的数组中,例如:

[ 
  {
   "a": 123,
   "b": "def"
  },
  {
   "a": 456,
   "b": "ghi"
  }
]

数据需要存储在一个文件中。 我知道我需要对SELECT OBJECT_CONSTRUCT(*) from my_table做一些事情,但是我不确定如何转换它。

您可以使用ARRAY_AGG来实现这一点:

COPY INTO @MY_STAGE/path/my_filename FROM (
SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*)) from my_table) 
FILE_FORMAT =(TYPE = JSON COMPRESSION = NONE)
OVERWRITE=TRUE;

这 function 将您的记录集转换为数组。 由于Snowflake arrays基本都是JSON arrays,所以ARRAY_AGG返回的数组可以直接写入JSON文件。

不幸的是, ARRAY_AGG有一个限制,只能容纳 16 MB 的数据。 如果您的数据集大于此,不幸的是不可能将所有数据以您想要的格式写入一个文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM