雪花数据库:在 COPY INTO 语句中使用 VALIDATION_MODE 从外部阶段加载 JSON 文件
Posted
技术标签:
【中文标题】雪花数据库:在 COPY INTO 语句中使用 VALIDATION_MODE 从外部阶段加载 JSON 文件【英文标题】:Snowflake Database : Loading JSON file from external stage with VALIDATION_MODE in COPY INTO statement 【发布时间】:2019-12-18 00:30:38 【问题描述】:加载 CSV 时,可以选择使用 VALIDATION_MODE 和 COPY INTO 命令。 这将为我们提供该 csv 中所有记录中的错误列表。
COPY INTO "PUBLIC"."TableCSV"
FROM @my_csv_stage
FILES = ('TableCSV.csv')
VALIDATION_MODE = 'RETURN_ERRORS';
加载 JSON 时,所有这些都不起作用:
COPY INTO "PUBLIC"."TableJSON1"
FROM @my_json_stage
FILES = ('TableJSON1.json')
MATCH_BY_COLUMN_NAME = CASE_SENSITIVE
VALIDATION_MODE = 'RETURN_ERRORS';
COPY INTO "PUBLIC"."TableJSON2"
FROM (
SELECT $1:"col1" :: VARCHAR
,$1:"col2" :: VARCHAR
FROM @my_json_stage
)
FILES = ('TableJSON2.json')
VALIDATION_MODE = 'RETURN_ERRORS';
COPY INTO "PUBLIC"."TableJSON3"
FROM (
SELECT $1:"col1" :: VARCHAR
,$1:"col2" :: VARCHAR
FROM @my_json_stage
)
FILES = ('TableJSON3.json');
SELECT * FROM TABLE(VALIDATE("TableJSON3", job_id => '_last'));
我可以看到this snowflake page 上的第一个示例具有我想要的 JSON 的确切表,但是当我执行时
SELECT * FROM TABLE(VALIDATE("TableJSON3", job_id => '_last'));
它给了我这个错误:
SQL compilation error: JSON/XML/AVRO 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.
【问题讨论】:
【参考方案1】:这是 Snowflake 中的一个已知问题。工程团队已经意识到这个问题,他们正在积极努力解决问题。目前修复时间表上没有预计到达时间。
【讨论】:
以上是关于雪花数据库:在 COPY INTO 语句中使用 VALIDATION_MODE 从外部阶段加载 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用雪花连接器和 COPY INTO 功能将 csv 上传到雪花时如何指定分隔符