簡體   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