Как обрабатывать специальные символы в Snowpipe (SNOWFLAKE) - PullRequest
0 голосов
/ 17 октября 2019

(Публикация этой последовательности вопросов и ответов в SO, так как я уверен, что некоторые новые пользователи могут столкнуться с подобными «скачками скорости». -G)


Как обрабатывать специальные символы в Snowpipe

Я создаю снежную трубу на основе CSV-файла. Мой CSV-файл содержит специальные символы в нескольких столбцах. Пожалуйста, дайте мне знать, как написать выражение select в snowpipe, которое позаботится о любых специальных символах.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Для обработки специальных символов вам необходимо их избежать.

Есть 2 способа экранирования специальных символов, но, к сожалению, каждый из них требует от вас изменения файла

1) вы можете экранироватьспециальный символ, дублируя его (чтобы избежать «вы делаете его»)

2) при определении формата файла вы можете добавить параметр ESCAPE, чтобы определить явный escape-символ. Например, вы можете использовать ESCAPE='\\', а затем добавить один символ \ перед каждым из специальных символов, которые вы хотите экранировать.

0 голосов
/ 17 октября 2019

Команда snowpipe встраивает оператор copy, который может содержать оператор select (преобразование), и мы можем использовать строковые функции для удаления специального символа.

/* Data load with transformation */
COPY INTO [<namespace>.]<table_name> [ ( <col_name> [ , <col_name> ... ] ) ]
     FROM ( SELECT [<alias>.]$<file_col_num>[.<element>] [ , [<alias>.]$<file_col_num>[.<element>] ... ]
            FROM { internalStage | externalStage } )
[ FILES = ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
[ PATTERN = '<regex_pattern>' ]
[ FILE_FORMAT = ( { FORMAT_NAME = '[<namespace>.]<file_format_name>' |
                    TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ]

Приведенная выше команда является частью следующего URL "https://docs.snowflake.net/manuals/sql-reference/sql/copy-into-table.html".


ПРИМЕЧАНИЕ. Мне было бы интересно узнать, использовал ли кто-нибудь другое альтернативное решение с успехом ... -G

...