Как прекратить получать ошибку и сохранить данные: отсутствует новая строка: в местоположении 116 обнаружен неожиданный символ 0x31 - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь скопировать данные из Amazon s3 в Amazon Redshift, но постоянно получаю сообщение об ошибке «Неожиданный символ» в одной строке каждый раз. Это случайная строка в середине файла, и это происходит со многими моими файлами, которые я пытаюсь скопировать.

Вот заявление о копировании:

COPY sample_table FROM "S3://bucket/file.psv' iam_role 'role' delimiter '|'
ACCEPTINVCHARS IGNOREBLANKLINES DATEFORMAT 'auto' TIMEFORMAT 'auto'
emptyasnull blanksasnull maxerror as 100000 ;

Вот формат таблицы:

create table sample_table (
id varchar (25),
model varchar (25),
api varchar (25),
msgdatetime timestamp,
msgdate date,
alias bigint,
key varchar (255),
value varchar (50)
) ;

Вот необработанная строка из данных:

AAA111111111|AA1111111|sample_API|2019-06-06 11:20:00|2019-06-06|111111111|Sample_key|1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Следует также отметить, что это является частью автоматизированного процесса, где вышеуказанный sql используется для копирования многочисленных файлов, которые вызывают одну и ту же проблему.

1 Ответ

0 голосов
/ 06 июня 2019

в ваших данных больше столбцов, чем в таблице

id = AAA111111111
model = AA1111111
api = sample_API
msgdatetime = 2019-06-06 11:20:00
msgdate  = 2019-06-06
key = 111111111
value = Sample_key

, который оставляет "1" в конце следующего столбца. 1 0x31

Возможно, вам нужен новый столбец (который я назвал newcol ниже)

create table sample_table (
id varchar (25),
model varchar (25),
api varchar (25),
msgdatetime timestamp,
msgdate date,
newcol varchar(255),
key varchar (255),
value varchar (50)
) ;
...