Как скопировать данные из s3 в Redshift с помощью «,» в значениях полей - PullRequest
0 голосов
/ 15 апреля 2020

При чтении данных из S3 в Redshift я столкнулся с ошибкой "Дополнительные столбцы найдены". Поскольку мои данные имеют 863830 строк и 21 столбец, я приведу небольшой пример того, как эти данные.

create table test_table(
name varchar(500),
age varchar(500)
)

и мои данные будут

(ABC,12)
(First,Last,25)

, где First, last должен go в один столбец

К сожалению, я не могу сделать это с эта команда копирования

COPY test_table from 'path'
iam_role 'credentials'
region 'us-east-1'
IGNOREHEADER 1
delimiter as ','

Есть ли способ разместить запятые в поле?

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Ваши данные не соответствуют спецификации CSV. См. RTF-4180

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

ABC,12
"First,Last",25

Скобки в файле данных также должны быть удалены, так как они будут интерпретироваться как часть полей данных.

В качестве альтернативы вы можете изменить разделитель ваших данных с "," на что-то еще, например, "%". Однако, если этот символ находится в ваших данных, то вы вернулись к тому, с чего начали. Ad ho c файлы с разделителями работают, только если вы используете символ, который никогда не будет в ваших данных. Вот почему я рекомендую вам использовать более надежную спецификацию CSV и использовать опцию «CSV» для копирования.

0 голосов
/ 16 апреля 2020

Это CSV-файл, который вы пытаетесь загрузить? Если это так, попробуйте выполнить загрузку с параметром формата CSV, указанным в команде, а не с разделителем «,». Вот пример -

COPY test_table from 'path' iam_role 'credentials' region 'us-east-1' IGNOREHEADER 1 CSV;

Если это не поможет, возможно, вам придется использовать параметр ESCAPE. Это также потребует изменений в вашем файле. Вот пример - https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples -copy-data-with-the-escape-option

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...