Page 1 of 1

Möglicher Datenverlust während der Postgres-Abfrage „In Auswahl einfügen“.

Posted: 17 Jan 2025, 08:40
by Guest
Ich habe eine Staging-Tabelle in PostgreSQL und verwende eine einfache INSERT INTO ... SELECT ...-Abfrage, um Daten aus der Staging-Tabelle in die endgültige Tabelle zu kopieren. Gelegentlich treten jedoch Datenverlustprobleme auf, nachdem der Vorgang abgeschlossen ist. Ich bin mir nicht sicher, warum das passiert. Staging-Tabelle Ich habe überprüft, ob sie korrekt ist (mit korrekten Daten).
Hier sind einige bemerkenswerte Details:
  • Die Staging-Tabelle ist eine einfache Tabelle ohne Indizes oder Schlüssel.
  • Die endgültige Tabelle enthält Schlüssel und Indizes.
  • Das Problem tritt nicht regelmäßig auf. Manchmal funktioniert die Datenübertragung einwandfrei, aber manchmal kommt es zu Datenverlust.
Code, den ich verwende

Code: Select all

import pg8000

...
bigSql = f"INSERT INTO final_tbl({sqlCols}) SELECT {sqlCols} FROM staging_tbl"
print(' ->Inserting data...')
limit = 4000000
offset = 0
while True:
cursor.execute(bigSql+f" LIMIT {limit} OFFSET {offset}")
print('Inserted ', cursor.rowcount)
if cursor.rowcount==0:
break
offset += limit
connection.commit()
Was die Serverinformationen betrifft, verwende ich Azure VM mit dem Laravel Forge-Panel, bereitgestellt von postgressql.