0

我有一列的值如下:

'BS1234BS'  (BS  stands for backspace)

这是极端的退格字符,目前我正在使用这个文件格式:

CREATE OR REPLACE FILE FORMAT ABC
    FIELD_DELIMITER = '\u001B'
    ESCAPE_UNENCLOSED_FIELD = 'NONE'
    TRIM_SPACE = TRUE
     NULL_IF = ('<NULL>')
     EMPTY_FIELD_AS_NULL = FALSE;

在将 FIELD_OPTIONALLY_ENCLOSED_BY 添加为 '0x08' 时出现此错误

SQL 编译错误:参数 'FIELD_OPTIONALLY_ENCLOSED_BY' 的值无效 ['0x08']

我应该进行哪些更改,以便它接受带有退格键的列

4

1 回答 1

0

该参数仅限于它可以使用的字符:

FIELD_OPTIONALLY_ENCLOSED_BY = '字符' | NONE 使用 数据加载和卸载

定义 用于包围字符串的字符。值可以是 NONE、单引号字符 (') 或双引号字符 (")。要使用单引号字符,请使用八进制或十六进制表示 (0x27) 或双单引号转义 ('')。

https://docs.snowflake.com/en/sql-reference/sql/create-file-format.html

您可以在外部对其进行处理以将它们更改为受支持的字符。您还需要转义用于可选包围字符的任何内容,例如 \" 如果您使用双引号。

如果您的行不超过 16MB,并且您希望在 Snowflake 中处理该行,则可以将 CSV 写入登录表,其中单个列定义为字符串。然后,您可以将退格字符替换为其他字符,并将单个字符串拆分为一个数组以插入各个列。

于 2021-10-28T16:05:19.503 回答