Как игнорировать ошибки, но не пропускать строки в команде копирования красного смещения - PullRequest
0 голосов
/ 05 марта 2020

У меня есть вложенный json в качестве исходного файла в S3, и я пытаюсь скопировать этот файл в красное смещение. У меня следующие проблемы:

  1. Я использую MAXERROR - мне нужно пропустить определенные ошибки, потому что в исходном файле в некоторых случаях отсутствуют определенные поля, а в других
  2. I использовать файл JSONPATH - чтобы выбрать поля, которые мне нужно скопировать в красное смещение
  3. Все столбцы в таблице varchar

Очевидно, поскольку я использую maxerror, команда копирования выполняется успешно, но в таблице 0 записей. Вот моя команда копирования

COPY public.table(col1,col2,col3,col4,col5,col6)
from 's3://bucket/filename'
credentials 'redshift'
format as JSON 'jsonpathfile.json'
timeformat 'YYYY-MM-DDTHH:MI:SS'
EMPTYASNULL ACCEPTANYDATE ACCEPTINVCHARS TRUNCATECOLUMNS maxerror 100 ;

Если я проверяю в stl_load_errors, он постоянно говорит:

Неверный формат JSONPath: Member не является объектом.

Означает ли это, что команда copy не может найти даже один объект, который соответствует файлу jsonpath? Что определенно не соответствует действительности. Я разработал схему входного файла для разработки файла jsonpath.

1 Ответ

0 голосов
/ 05 марта 2020

Вот пример из COPY Примеры - Amazon Redshift :

copy category
from 's3://mybucket/category_object_paths.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 's3://mybucket/category_jsonpath.json';

Путь к файлу jsonpath указан полностью, тогда как ваш пример просто ссылается на имя файла.

Попробуйте указать полный путь, начиная с s3://, и посмотрите, поможет ли это.

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