Лучший способ вставки очень больших данных в таблицы PostgreSQL.Python

Программы на Python
Ответить
Anonymous
 Лучший способ вставки очень больших данных в таблицы PostgreSQL.

Сообщение Anonymous »


Как лучше всего вставить очень большие данные в таблицу PostgreSQL?
ОС: Ubuntu 22.04 LTS
БД: PostgreSQL 14
Платформа: Python 3.11 Django

На данный момент я использую оператор вставки в 100 000 строк за раз. Весь процесс вставки в среднем 1 000 000 строк занимает 2 минуты, что находится в пределах моего приемлемого диапазона. Но я хочу знать, есть ли лучший способ сделать это.

Все работало нормально, но почему-то это занимало больше времени и иногда выдавало ошибки, например
OperationalError: (psycopg2.OperationalError) сервер неожиданно закрыл соединение из соединения импорта django.db курсор = соединение.курсор() размер_пакета = 100000 смещение = 0 пока правда: транзакции_list_query = SELECT * FROM {source_table} LIMIT {batch_size} OFFSET {offset}; курсор.execute(transaction_list_query) список транзакций = dictfetchall (курсор) если не список_транзакций: перерыв data_to_insert = [] для транзакции в списке транзакций: # Некоторые трудоемкие вычисления Insert_query = INSERT INTO {per_transaction_table} ({company_ref_id_id_column}, {rrn_column}, {transaction_type_ref_id_id_column}, {transactionamount_column}) VALUES {",".join(data_to_insert)} ПРИ КОНФЛИКТЕ ({rrn_column}) ОБНОВИТЬ НАБОР {company_ref_id_id_column} = ИСКЛЮЧЕНО .{company_ref_id_id_column}; курсор.execute(insert_query) смещение += размер_пакета
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»