Snowflake cloud data platform ON_错误参数不适用于JSON文件

Snowflake cloud data platform ON_错误参数不适用于JSON文件,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我用雪花创建了简单的表格: Column name Type S VARCHAR N NUMBER 这两列都可以为空。 现在我想从CSV和JSON文件将部分错误结果加载到表中 CSV 第三行是“坏的”:它的第二个元素不是数字。 用于加载此文件的命令: "COPY INTO "DEMO_DB"."PUBLIC"."TEST5" FROM @my_s3_stage1 files=('2good-1bad.csv') file_format

我用雪花创建了简单的表格:

Column name    Type
S              VARCHAR
N              NUMBER
这两列都可以为空。 现在我想从
CSV
JSON
文件将部分错误结果加载到表中

CSV

第三行是“坏的”:它的第二个元素不是数字。 用于加载此文件的命令:

"COPY INTO "DEMO_DB"."PUBLIC"."TEST5" FROM @my_s3_stage1 files=('2good-1bad.csv') file_format = (type = csv field_delimiter = ',' skip_header = 1) ON_ERROR = CONTINUE;
抛出雪花异常:

errorCode = 200038 
SQLState = 0A000 
message: Cannot convert value in the driver from type:12 to type:int, value=PARTIALLY_LOADED.
errorCode = 100071 
SQLState = 22000 
message: Failed to cast variant value "zero" to FIXED
表中写入两行“良好”;“坏”的一个被忽略了。这一结果是意料之中的

但是,当我使用以下JSON行文件时:

{"s":"hello", "n":1}
{"s":"bye", "n":2}
{"s":"nothing", "n":"zero"}
使用此命令:

COPY INTO "DEMO_DB"."PUBLIC"."TEST5" FROM @my_s3_stage1 files=('2good-1bad.json') file_format = (type = json) 
MATCH_BY_COLUMN_NAME=CASE_INSENSITIVE 
ON_ERROR = CONTINUE
我得到以下
雪花SQLException

errorCode = 200038 
SQLState = 0A000 
message: Cannot convert value in the driver from type:12 to type:int, value=PARTIALLY_LOADED.
errorCode = 100071 
SQLState = 22000 
message: Failed to cast variant value "zero" to FIXED
没有任何内容写入数据库

问题是“怎么了?” 为什么
ON_ERROR=CONTINUE
不能处理我的JSON文件

附言:

  • 用单引号括起
    CONTINUE
    ,没有帮助
  • 使用小写字母没有帮助
  • 事实上,我不需要继续,我需要
    跳过文件
    ,但是这不适用于JSON
  • 实际上,我们在生产环境中使用avro,所以它更相关。我使用
    JSON
    进行测试,因为它更简单
    非CSV文件格式不支持on_错误,这是正确的。我见过有文件的人,他们可以用字段_DELIMITER='none'来解决指定CSV文件类型的问题

    我看到一些人要求此选项适用于半结构化文件,欢迎您提交功能请求,以满足更多需求:

    文档并没有明确说明它不受支持(请使用底部的按钮提交文档反馈),但您可以看到它暗示:

    您可以使用相应的文件格式(如JSON),但转换中的任何错误都将停止复制操作,即使您将ON_error选项设置为继续或跳过文件