Snowflake 数据库:在 COPY INTO 语句中使用 VALIDATION_MODE 从外部阶段加载 JSON 文件

Snowflake Database : Loading JSON file from external stage with VALIDATION_MODE in COPY INTO statement

加载 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 :"col1" :: VARCHAR
          ,:"col2" :: VARCHAR
      FROM @my_json_stage 
  )
FILES = ('TableJSON2.json')
VALIDATION_MODE = 'RETURN_ERRORS';
COPY INTO "PUBLIC"."TableJSON3"
FROM (
    SELECT :"col1" :: VARCHAR
          ,:"col2" :: VARCHAR
      FROM @my_json_stage 
  )
FILES = ('TableJSON3.json');
SELECT * FROM TABLE(VALIDATE("TableJSON3", job_id => '_last'));

我可以看到 this snowflake page 上的第一个示例具有我想要 JSON 的确切 table,但是当我执行

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.

这是 Snowflake 中的一个已知问题。工程团队已意识到该问题,他们正在积极努力解决问题。目前修复时间表上没有预计到达时间。