Redshift COPY - получить отклоненные строки в файле - PullRequest
1 голос
/ 05 июля 2019

Вот ситуация:

Некоторая третья сторона выгружает данные CSV в корзину S3. Эти данные мы хотим загрузить в Redshift. Поскольку мы не контролируем качество отправляемых нам данных, мы должны рассмотреть возможность возникновения некоторых ошибок при копировании в Redshift. Мы не хотим просто игнорировать их, поэтому мы ищем способы понять эти ошибки загрузки.

Идея такова: Установите MAXERROR на максимально допустимое число, загрузите то, что можно загрузить, и посмотрите на отклоненные строки впоследствии. Последнее можно сделать, запросив таблицы Redshift для STL_LOAD_ERRORS и STL_LOADERROR_DETAIL.

Проблема здесь в том, что эти таблицы, хотя атрибуты STL_LOAD_ERRORS.raw_line, STL_LOAD_ERRORS.raw_field_value и STL_LOADERROR_DETAIL.value действительно существуют, их размер ограничен длиной 1024, в то время как один из столбцов, которые мы получаем, представляет собой огромный JSON Строка, которая может легко достигать 20k + в длину. Кроме того, эти таблицы ошибок, насколько я понимаю, содержат информацию только о тех столбцах, которые на самом деле вызвали проблему, а не о других столбцах (например, столбцы первичного ключа, которые могут помочь в определении плохих строк).

Итак, мой вопрос: Есть ли способ указать COPY полностью сбросить отклоненные строки в какой-то файл rejected_file для последующего анализа?

...