Как сохранить / создать отклоненный файл данных с помощью команды 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
один раз с коммитом, и он создаст его навсегда.
Надеюсь, поможет.