SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组

Posted

技术标签:

【中文标题】SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组【英文标题】:SQL compilation error: JSON file format can produce one and only one column of type variant or object or array when copying from S3 to Snowflake 【发布时间】:2020-12-31 10:04:23 【问题描述】:

我在 S3 中存储了以下 JSON:

"data":"this is a test for firehose"

我创建了表test_firehose,其中包含一个varchar 列数据,以及一个名为JSON 的文件格式,其类型为JSON,其余为默认值。我想将内容从 s3 复制到雪花,我尝试了以下语句:

COPY INTO test_firehose
FROM 's3://s3_bucket/firehose/2020/12/30/09/tracking-1-2020-12-30-09-38-46'
FILE_FORMAT = 'JSON';

我收到错误:

    SQL compilation error: JSON file format can produce one and only one column of type 
variant or object or array. Use CSV file format if you want to load more than one column.

我该如何解决这个问题?谢谢

【问题讨论】:

Snowflake 支持以下半结构数据类型来存储半结构数据:Variant、Object 和 Array。尝试将表列数据类型更改为变体,然后再次尝试加载数据。 【参考方案1】:

如果要将数据保存为 JSON(而不仅仅是文本),则需要将其加载到数据类型为 VARIANT 而非 VARCHAR 的列中

【讨论】:

以上是关于SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从 s3 到 redshift db 的复制命令解决语法错误

如何从 SQL 脚本执行 AWS S3 到 Redshift Copy 命令?

S3 复制命令给出错误 + 如何从复制命令中删除密钥

在将数据从 S3 复制到 redshift 时,我遇到了以下错误:

将 csv 文件从 s3 复制到 redshift 的问题

从 S3 接入点复制到 Redshift