Мне нужны данные ETL между двумя базами данных postgresql. Несколько столбцов, которые нужно перенести, содержат HTML-код. Это несколько миллионов строк, и мне нужно переместить это с помощью копии CSV по соображениям скорости. При попытке csv.writer и copy_fs из файла csv символы в коде HTML вызывают ошибки при передаче, что делает невозможным установить разделитель или обработать кавычку
Я запускаю это задание ETL через python и использую .replace () для столбцов, чтобы сделать ';' работать в качестве разделителя.
Однако у меня возникают проблемы с разрывами страниц и абзацами в HTML-коде (особенно
и
) и полях цитирования. Когда я сталкиваюсь с этим, я получаю сообщение об ошибке «отсутствуют данные для столбца»
Я попытался установить двойную кавычку и изменить escape-символ на \. Я также попытался изменить кавычку на '|'
Код, который я использую для создания CSV:
filename = 'transfer.csv'
with open(filename, 'w') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=';', quotechar='|',
quoting=csv.QUOTE_MINIMAL)
Код, который я использую для загрузки CSV:
f = open(file_path, "r")
print('File opened')
cur.copy_from(f, stage_table, sep=';', null="")
Как упомянуто выше, сообщение об ошибке, которое я получаю, когда пытаюсь импортировать csv: «Ошибка: отсутствуют данные для столбца»
Мне бы хотелось иметь возможность форматировать мой код csv.writer и copy_from таким образом, чтобы мне не приходилось использовать десятки или более вложенных операторов replace (), преобразовывать эти данные в ETL и иметь возможность автоматического запуска сценария. это по графику.