Snowflake COPY INTO 在数据值中的双引号值上失败
Snowflake COPY INTO fails on double quote value in a data value
由于在数据值中发现双引号,COPY INTO 失败。
C 周围的两个双引号导致失败 -> NE 845 "C" Street.
确切的错误信息是:
Found character 'H' instead of field delimiter '|~' File '@~/FolderX/datafile.dat.gz', line 1, character 107 Row 274598, column
"MY_TABLE"["BADCOLUMN":20] If you would like to continue loading when
an error is encountered, use other values such as 'SKIP_FILE' or
'CONTINUE' for the ON_ERROR option. For more information on loading
options, please run 'info loading_data' in a SQL client.
格式文件定义为:
CREATE FILE FORMAT "DW"."STG".FMT_FILE
COMPRESSION = 'GZIP'
FIELD_DELIMITER = '|~'
RECORD_DELIMITER = '\n'
SKIP_HEADER = 0
FIELD_OPTIONALLY_ENCLOSED_BY = '2'
TRIM_SPACE = TRUE
ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE
ESCAPE = '#'
ESCAPE_UNENCLOSED_FIELD = 'NONE'
DATE_FORMAT = 'AUTO'
TIMESTAMP_FORMAT = 'AUTO'
ENCODING = 'WINDOWS1253'
NULL_IF = ('\N');
当数据为:
时,为什么要关心任何值中是否存在双引号
123|~NE 845 "C" Street|~PULLMAN
鉴于格式文件的定义,应该没有必要在任何字符串中添加转义符。这种失败似乎是一个错误。
这不是错误。当您使用此语句 FIELD_OPTIONALLY_ENCLOSED_BY = '2'
时,您已明确要求 Snowflake 将双引号识别为将值括在文件中的一种方式。如果您从您的文件格式中删除它(或更改为 NONE
),您应该不会收到您收到的错误。不过,Snowflake 的行为符合预期。
由于在数据值中发现双引号,COPY INTO 失败。
C 周围的两个双引号导致失败 -> NE 845 "C" Street.
确切的错误信息是:
Found character 'H' instead of field delimiter '|~' File '@~/FolderX/datafile.dat.gz', line 1, character 107 Row 274598, column "MY_TABLE"["BADCOLUMN":20] If you would like to continue loading when an error is encountered, use other values such as 'SKIP_FILE' or 'CONTINUE' for the ON_ERROR option. For more information on loading options, please run 'info loading_data' in a SQL client.
格式文件定义为:
CREATE FILE FORMAT "DW"."STG".FMT_FILE
COMPRESSION = 'GZIP'
FIELD_DELIMITER = '|~'
RECORD_DELIMITER = '\n'
SKIP_HEADER = 0
FIELD_OPTIONALLY_ENCLOSED_BY = '2'
TRIM_SPACE = TRUE
ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE
ESCAPE = '#'
ESCAPE_UNENCLOSED_FIELD = 'NONE'
DATE_FORMAT = 'AUTO'
TIMESTAMP_FORMAT = 'AUTO'
ENCODING = 'WINDOWS1253'
NULL_IF = ('\N');
当数据为:
时,为什么要关心任何值中是否存在双引号123|~NE 845 "C" Street|~PULLMAN
鉴于格式文件的定义,应该没有必要在任何字符串中添加转义符。这种失败似乎是一个错误。
这不是错误。当您使用此语句 FIELD_OPTIONALLY_ENCLOSED_BY = '2'
时,您已明确要求 Snowflake 将双引号识别为将值括在文件中的一种方式。如果您从您的文件格式中删除它(或更改为 NONE
),您应该不会收到您收到的错误。不过,Snowflake 的行为符合预期。