Перенести данные из SQLite в PostgreSQL python
У меня в разработке стоит задача перенести таблицу с более чем 15.000 записей (что немного) из SQLite в postgreSQL. Чтение документации, туториалов и прочего на пространстве сети Интернет показало, что самым эффективным будет использование новой фичи в python в виде dataclasses. Изначально планировал выгрузить SQLite в csv, сохранить через io.StringIO() и потом уже через COPY добавить в аналогичную таблицу в postgreSQL, однако задача стоит именно в использовании dataclasses. Кто сталкивался с подобного рода заданиями? Не понимаю как работает под капотом и алгоритм действий. Вижу это так:
- Выгружаем SQLite в экземпляр dataclass (я сделал в виде кортежа).
- Далее подключаемся к postgreSQL, создаем временную таблицу и выгружаем туда данные.
- А временную таблицу мы уже копируем в реальную (либо через INSERT либо еще как-то).
Кто уже сталкивался с подобными задачами и как можно эффективнее решить? Буду благодарен за любую информацию!
Ответы (1 шт):
По простоте решения, вижу следующие способы:
1 способ ручной-контролируемый. Перенести в csv. В Excel для первой строки собрать через функцию СЦЕПИТЬ() необходимый insert, отработав преобразование типов. Протянуть для всех 15000 сток. Выполнить 15000 insert в Postgres, желательно в одной транзакции.
2 способ автоматизированный, но менее контролируемый по преобразованию типов, погуглив https://www.postgresqltutorial.com/postgresql-tutorial/import-csv-file-into-posgresql-table/
3 способ экзотический, контролируемый. Использовать встроенное расширение PL/Python https://postgrespro.ru/docs/postgresql/10/plpython. В этом случае сервер Postgres должен получить прямой доступ к файлу sqlite
- Способ традиционный. Клиент python подключается к обеим базам...