Как сделать ETL столбцы postgresql, которые содержат HTML-код через CSV-копию - PullRequest
0 голосов
/ 03 июля 2019

Мне нужны данные 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 и иметь возможность автоматического запуска сценария. это по графику.

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