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

时间:2019-12-18 00:30:38

标签: c# json snowflake-data-warehouse

加载 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 个答案:

答案 0 :(得分:0)

这是雪花中的已知问题。工程团队已意识到该问题,并且正在积极寻求解决方案。目前,修复时间表上没有ETA。