我的 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;
提供的文件格式似乎有效。对于
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;
输出: