Snowflake-转义字符参数在Copy语句中不起作用

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

问题陈述-使用复制命令并定义转义属性进行数据加载时,该语句并未消除数据中的转义字符。前我正在尝试从CSV文件加载数据。该文件在其中一列('EC F&G BREWER \'S INT \'L BEER')中具有以下格式的数据。对此的期望是,加载后应从数据字段中删除数据中的转义字符(即反斜杠“ \”)。

以下是我正在使用的复制语句-

COPY INTO SANDBOX.TEST_SBX.TEST_20200512
                      FROM @STAGE_NAME/TEST_FILE/
                      FILE_FORMAT = (FIELD_DELIMITER = ','
                                     RECORD_DELIMITER = '\n'
                                     SKIP_HEADER = 0
                                     FIELD_OPTIONALLY_ENCLOSED_BY = '\047'
                                     TRIM_SPACE = FALSE
                                     ESCAPE ='\134'
                                     ESCAPE_UNENCLOSED_FIELD='\134'
                                     ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE
                                     DATE_FORMAT = 'AUTO' TIMESTAMP_FORMAT = 'AUTO' NULL_IF = ('NULL', 'null', '')         )
                      PATTERN='.*.gz.*'
                      PURGE=FALSE
                      ON_ERROR = ABORT_STATEMENT
                      FORCE = FALSE
                      RETURN_FAILED_ONLY = FALSE
                      ; 

此文件中有许多列的字符字段中带有()反斜杠,并且在加载过程中所有列均被忽略。

我无法切换到手动列选择模式并使用Regexp替换转义字符,我必须使用copy命令而不切换到列选择模式。

我希望以文件格式配置的转义字符得到适当处理(转义),而不必像对待其他数据处理/加载引擎中将其视为转义字符一样,将其视为转换。

[请在此建议我可以做什么。

snowflake-cloud-data-platform
2个回答
0
投票

这是我实现的代码

 COPY INTO test_so FROM @file_format_stage/test_so.csv.gz 
FILE_FORMAT = (FIELD_DELIMITER = ',' RECORD_DELIMITER = '\n' 
               SKIP_HEADER = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '\047' 
               TRIM_SPACE = FALSE ESCAPE ='\\' --ESCAPE_UNENCLOSED_FIELD='\134' 
               NULL_IF = ('NULL', 'null', '') ) 
               force=true

和结果Result


0
投票

我尝试完全相同地复制,但仍未得到相同的结果。了解到文件有问题。或导致该问题的帐户级别参数出现问题。

CREATE OR REPLACE TABLE SANDBOX.AAGRA018_SBX.TEXT_FILE_TST 
 (COL1 VARCHAR(50)
 );

 TRUNCATE TABLE SANDBOX.AAGRA018_SBX.TEXT_FILE_TST;
 COPY INTO SANDBOX.AAGRA018_SBX.TEXT_FILE_TST  
 FROM @~/Test_File.txt.gz
 FILE_FORMAT = (FIELD_DELIMITER = ',' RECORD_DELIMITER = '\n' 
                SKIP_HEADER = 0 FIELD_OPTIONALLY_ENCLOSED_BY = '\047' 
                TRIM_SPACE = FALSE ESCAPE ='\\' --ESCAPE_UNENCLOSED_FIELD='\134' 
                NULL_IF = ('NULL', 'null', '') 
                 ) 
                force=true;


select * from SANDBOX.AAGRA018_SBX.TEXT_FILE_TST;

Data File -

YB MARTHA\'S VINEYARD LOUNGE
EC F&G BREWER\'S INT\'L BEER

This is not giving the desired result 
[Snowflake UI Image copy][1]

  [1]: https://i.stack.imgur.com/IBgNz.png
© www.soinside.com 2019 - 2024. All rights reserved.