【问题标题】:Found character instead of field delimiter '|' in Snowflake在雪花中找到字符而不是字段分隔符 \'|\'
【发布时间】:2022-09-29 21:10:37
【问题描述】:

我的 CSV 文件中有一行,如下所述

\"TEXT\"|\"123584543\"||||\"Sherly\"||\"E\'Sheryl\"|||\"DOCT\"||\"DC\"||||| \"AC\"|||||||||||

我正在尝试使用以下查询创建舞台:

Create or Replace file format test_stg
type = CSV
RECORD_DELIMITER = \'\\n\'
FIELD_DELIMITER = \'|\'
FIELD_OPTIONALLY_ENCLOSED_BY = \'\\042\'
SKIP_HEADER=1
empty_field_as_null = true
ESCAPE = \"\';

When I run the above query I\'m getting error which I have mentioned below:

**SQL compilation error: value [\\\"] for parameter \'FIELD_OPTIONALLY_ENCLOSED_BY\' conflict with parameter \'ESCAPE\'**

当我尝试以下查询时,它正在成功执行。

create or replace file format test_stg1
  type = csv
  record_delimiter = \'\\n\'
  field_delimiter = \'|\'
  skip_header = 1
  null_if = (\'NULL\', \'null\')
  empty_field_as_null = true
  FIELD_OPTIONALLY_ENCLOSED_BY = \'0x22\';

此查询成功执行。但是当我运行 COPY 命令时,我得到一个不寻常的错误 - 找到字符而不是字段分隔符 \'|\'。

任何人都可以指导解决这个问题吗?

谢谢 :)

  • 您的源文件是否以 UTF-8 编码?如果没有,您可能需要在文件格式上设置encoding 选项。这是看到此错误的原因之一。支持的编码在此页面上(向下滚动大约一半)docs.snowflake.com/en/sql-reference/sql/create-file-format.html
  • 是的,源文件以 UTF-8 编码
  • 我相信如果您删除escape = \"\' 或将其改为escape = NONE,第一个语句会很好。问题似乎是您的转义和您的 field_optionally_enclosed_by 是同一个字符。根据您的示例,您不需要定义转义字符。
  • 我仍然收到错误消息 - 找到字符 \'D\' 而不是字段分隔符 \'|\'

标签: snowflake-cloud-data-platform


【解决方案1】:

删除 FIELD_OPTIONALLY_ENCLOSED_BY = '0x22' ,重新创建文件格式并运行复制语句。

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多