【问题标题】:How to load data into snowflake table from json.gz file如何从 json.gz 文件加载数据到雪花表
【发布时间】:2022-12-06 01:15:02
【问题描述】:

我想将我的 json.gz 文件中的记录插入到雪花表中。 我创建了这个步骤:


CREATE FILE FORMAT test_gz TYPE = JSON

                     
create stage my_test_stage

  storage_integration = MY_S3

  url = 's3://mybucket/'

  file_format = test_gz;

 



  copy into test_table

  from @my_test_stage

我有一个错误:JSON 文件可以生成一列且只有一列类型为变体或对象或数组。 我还尝试将文件格式更改为 gzip,但它不起作用。

【问题讨论】:

  • 我相信这个错误是很有解释性的——你的目标表是否只有一列类型 variant 并且它仍然失败?
  • @Pankaj 我的表有两列名称 varchar(50) 和电子邮件 varchar(50)。我的 json.gz 看起来像这样:{"name":"John", "email":"xxx"}。
  • 您需要创建一个表来首先保存来自 json 的原始数据(只有一个列类型变体的表),然后您可以从该表复制到主表。或者,尝试从 (select $1:name,$1:email from @stage_name) 复制到 test_table(col_name_1, col_name_2)
  • @Pankaj 我不得不使用 copy into test_table(name,email) from (select split($:name,'.'),split ($1: email,'.') from @my_test_stage);

标签: snowflake-cloud-data-platform


【解决方案1】:

您需要做的就是添加 CREATE FILE FORMAT test_gz TYPE = JSON COMPRESSION=GZIP 而不仅仅是 TYPE = JSON

确保你的 dest 表看起来像这样:

CREATE OR REPLACE TABLE test_table (JSON_DATA VARIANT)

无论哪种方式,您都可以一次执行所有操作:

copy into test_table
from 's3://mybucket/'
storage_integration = MY_S3
file_format = (type = json COMPRESSION=GZIP)

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多