Как скопировать данные в Redshift, используя опцию DELIMITER, которая имеет разделитель в самих данных? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть данные с разделителями канала, которые я пытаюсь скопировать из S3 в RedShift, но операция COPY завершается неудачно с кодом ошибки 1202 : Extra column(s) found.

При просмотре stl_load_errors операция копирования не удалась для строккоторые имеют |разделитель в них.

Пример данных:

1|hello world|how|are you|
2|"hope|you|are|doing|good"|thank you|
3|I am fine|thank you|

Для вышеупомянутых данных 2|"hope|you|are|doing|good"|thank you| не удается скопировать, поскольку он имеет |разделитель сам по себе, даже если он находится в двойных кавычках.

Моя команда копирования выглядит следующим образом:

COPY <DATABASE.TABLE NAME>
FROM 's3://path/to/file'
iam_role 'arn:aws:iam:my_role'
delimiter '|'
dateformat 'auto'
IGNOREHEADER 1
MAXERROR 5;

В документации AWS RedShift есть один пример для загрузки данных этого типа, но они использовали CSVопция, а не опция DELIMITER.

Пожалуйста, помогите мне в решении этой проблемы.

Спасибо, Чандра

1 Ответ

0 голосов
/ 27 февраля 2019

Вы должны добавить параметр REMOVEQUOTES.

Из Параметры преобразования данных - Amazon Redshift :

Удаляет окружающие кавычки из строк во входящихданные.Все символы в кавычках, включая разделители, сохраняются.

...