如何在雪花文件格式中转义双引号反斜杠

问题描述 投票:0回答:1

我的 csv 文件包含用双引号引起来的字段,并且字段之间用

|
分隔。对于某些字段,我在 csv 文件中具有以下值:

|"\"Bremen \""|

我想删除

\"
,因此复制到输出后应另存为:

|"Bremen "|

在下面的文件格式命令中我尝试过但没有成功:

CREATE OR REPLACE FILE FORMAT PO_PIPE
    type = 'CSV'    
    TIMESTAMP_FORMAT = 'YYYY-MM-DD hh24:mi:ss.ff' 
    skip_header = 1
    field_delimiter = '|'    
    FIELD_OPTIONALLY_ENCLOSED_BY ='"'
    TRIM_SPACE = TRUE
    null_if = ('\\N','NULL','Null','(null)','null','','\\n')
    EMPTY_FIELD_AS_NULL = TRUE
    ESCAPE = '\\'
    ERROR_ON_COLUMN_COUNT_MISMATCH=FALSE
    COMPRESSION=GZIP;
csv snowflake-cloud-data-platform escaping file-format
1个回答
0
投票

提供的文件格式似乎有效。对于

input.csv

col|col2
"\"Bremen \""|1
"\"Test\""|2

重现:

CREATE OR REPLACE TABLE tab(col TEXT, b INT);

CREATE OR REPLACE FILE FORMAT PO_PIPE
    type = 'CSV'    
    TIMESTAMP_FORMAT = 'YYYY-MM-DD hh24:mi:ss.ff' 
    skip_header = 1
    field_delimiter = '|'    
    FIELD_OPTIONALLY_ENCLOSED_BY ='"'
    TRIM_SPACE = TRUE
    null_if = ('\\N','NULL','Null','(null)','null','','\\n')
    EMPTY_FIELD_AS_NULL = TRUE
    ESCAPE = '\\'
    ERROR_ON_COLUMN_COUNT_MISMATCH=FALSE;

-- place file into the stage
LIST @TESTSTAGE;
-- teststage/input.csv

COPY INTO PUBLIC.TAB
 FROM @TESTSTAGE/input.csv
 FILE_FORMAT = (FORMAT_NAME = 'PO_PIPE')
 FORCE = TRUE;

SELECT * FROM tab;

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.