Как эффективно вставить данные из одной postgres базы данных в другую?
У меня есть устаревшее приложение для узлов, которое я конвертирую в Django. Оба проекта используют Postgres. Схема данных в приложении узла значительно отличается от нового приложения Django. Поэтому я написал скрипт, который отображает старые данные в новую схему данных.
Проблема в том, что скрипт мучительно медленный. 5 записей в секунду. У меня более миллиона записей.
Какой самый эффективный способ добиться этого?
Мой текущий скрипт выглядит так:
@transaction.atomic
def migrate_users(cursor):
select_query = "select * from users order by id" # old database
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
record_dict = {}
record_dict['id'] = row[0]
record_dict['name'] = row[1]
record_dict['email'] = row[2]
defaults = {
'name' : record_dict['name'],
'extra' : {
'old_node_db_values' : {
'id': record_dict['id']
}
}
}
u, created = User.objects.get_or_create(
email=record_dict['email'],
defaults = defaults
)
if created:
u.set_password(DEFAULT_USER_PASSWORD)
u.save()
Это упрощенный скрипт. Фактические данные требуют большого массажа.