Команда Redshift COPY возвращает stl_load_error 1205 Неверный формат даты - длина должна быть 10 или более - PullRequest
0 голосов
/ 23 января 2020

Я копирую файл .csv из S3 в Redshift, и команда Redshift COPY возвращает

  • stl_load_error 1205
  • Неверный формат даты - длина должна быть 10 или более.

Все мои даты состоят из 10 символов и имеют формат по умолчанию «ГГГГ-ММ-ДД».

Команда:

COPY [table]
FROM [file location]
ACCESS_KEY_ID [___]
SECRET_ACCESS_KEY [____]
FORMAT AS CSV
IGNOREHEADER 1;

Таблица была создана с использованием:

CREATE TABLE finance.commissions_life (
submitted_date date,
campaign varchar(40),
click_id varchar(40),
local_id varchar(40),
num_apps float);

И .csv также в этом точном формате.

У кого-нибудь еще есть подобная проблема?

Ответы [ 3 ]

1 голос
/ 24 января 2020

Когда я сталкивался с этой ошибкой в ​​прошлом, я всегда прибегаю к явному определению как используемого разделителя, так и формата даты:

COPY db.schema.table
FROM 's3://bucket/folder/file.csv'
CREDENTIALS 'aws_access_key_id=[access_key];aws_secret_access_key=[secret_access_key]'
DELIMITER AS ','
DATEFORMAT 'YYYY-MM-DD'
IGNOREHEADER 1
;

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

COPY db.schema.table
FROM 's3://bucket/folder/file.csv'
CREDENTIALS 'aws_access_key_id=[access_key];aws_secret_access_key=[secret_access_key]'
DELIMITER AS '\t' 
DATEFORMAT 'YYYY-MM-DD'
IGNOREHEADER 1
REMOVEQUOTES
;

Кроме того, вы сможете запросить системную таблицу stl_load_errors, чтобы собрать дополнительную информацию о точной строке / тексте, которая вызывающий сбой загрузки:

SELECT *
FROM stl_load_errors
ORDER BY starttime DESC
;
0 голосов
/ 29 января 2020

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

Спасибо за вашу помощь!

0 голосов
/ 28 января 2020

Расширяя ответ, предоставленный @John, используйте dateformat 'auto' в команде копирования для большей гибкости. Кроме того, если его ответ решил проблему, отметьте его как принятый, чтобы мы знали. Если нет, можете ли вы запросить таблицу системных ошибок, чтобы увидеть ошибочные записи и отредактировать свой вопрос, чтобы опубликовать sh значение "raw_line" или "raw_field_value"?

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