Как сохранить / создать отклоненный файл данных с помощью команды vertica copy, используя python 3.x

Я копирую данные из CSV-файла в таблицу Vertica, используя следующий код Python:

with open("D:/SampleCSVFile_2kb/SampleCSVFile_2kb.csv", "rb") as fs:
    my_file = fs.read().decode('utf-8','ignore')
    cur.copy( "COPY STG.unstruc_data FROM STDIN PARSER FDELIMITEDPARSER (delimiter=',', header='false') ", my_file)

Это работает нормально, но я хочу сохранить отклоненные данные, поэтому я использовал этот запрос вместо того, чтобы сохранить отклоненные данные.

COPY STG.unstruc_data FROM STDIN PARSER FDELIMITEDPARSER (delimiter=',',     
header='false') exceptions 'except.csv' rejected data 'reject.csv';

Это копирование данных в таблицу vertica, но не создание файла для отклоненных данных. Можно ли создать CSV-файл для отклоненных данных из Python? Если да, то как это можно сделать.

Заранее спасибо за помощь -:)

1 ответ

Вы захотите использовать таблицы отклонений, если вы используете Vertica 7.0+. Это создаст файлы отклонения на каждом узле и обернет его внешним представлением таблицы.

Чтобы использовать это, добавьте rejected data to table my_reject_table, После загрузки вы сможете запросить это.

Если вы делаете NO COMMIT (скопируйте параметр оператора), тогда таблица отклонения будет временной для этого сеанса. В противном случае это навсегда. Вы можете использовать это, чтобы помочь с вашим рабочим процессом, который вы запланировали. Если вы хотите, чтобы он был временным, чтобы вы могли запросить все отклонения, лучше использовать временную. Если это для длительного хранения и проверки брака, постоянный вариант может быть лучше. Если вы хотите сделать его постоянным и по-прежнему использовать NO COMMIT тогда просто сделай COPY один раз с коммитом, и он создаст его навсегда.

Надеюсь, поможет.

Другие вопросы по тегам