ERROR: duplicate key value violates unique constraint

Hallo zusammen,

ich versuche auf folgende Weise ein Backup zu erstellen und wieder zurückzuspielen:

Backup
/usr/bin/pg_dumpall -h 192.168.0.10 --data-only --clean --disable-triggers -U postgres --clean -W --file=daten.sql

Restore
psql -U postgres -d application -f daten.sql

Beim Einspielen der Daten bekomme ich jedoch mehrfach die Meldung

ERROR:  duplicate key value violates unique constraint [key_name]

Deshalb sind auch keine aktuallisierten Daten in der Datenbank. Drope ich die komplette Datenbank und spiele sowohl das Schema als auch die Daten ein, klappt mit genau diesen Befehlen alles. Ich möchte das Schema jedoch nicht anrühren und nur die Daten rücksichern.

Ich habe auch schon den Parameter “–clean” eingebaut, in der Hoffnung, dass so vorher Tabellen gelöscht werden und es keine Probleme mit Abhängigkeiten gibt. Trotzdem aber der “duplicate key value” Error.

Kann mir da jemand weiterhelfen?

Vielen Dank!

Ich denke mal, --clean zusammen mit --data-only macht nicht so dolle Sinn, denn --clean DROPt die Datenbank, mit --data-only fehlt dann aber die Definition der Tabellen.
Ohne es zu testen vermute ich mal, das die Option --clean dann ignoriert wird. Kannst ja mal in den Dump schauen - keine Angst, der beißt nicht, ist nur Text.


Andreas

Das “–clean” hat mir anscheinend weder ein “DROP Table” noch ein “TRUNCATE Table” eingebaut. Aber anders gefragt: Was wäre denn generell der richtige Weg, wenn ich NUR die Daten, aber nicht das Schema zurückkopieren möchte und denduplicate key - Error bei bei Tabellen und Sequenzen vermeiden möchte? Oder wär das vom Prinzip her schon richtig, wie ich es gemacht habe?

Da mußt dann wohl dafür sorgen, daß die Tabellen leer sind. Das --clean macht IIRC ein DROP DATABASE, nicht einzelne Tabellen etc.

Aber mal anders gefragt: warum soll da das Schema ausgeklammert werden? Die DDL-Befehle sind meist deutlich weniger im Umfang als die eigentlichen Daten.


Andreas

Hallo Andreas, der Grund, warum ich das Schema an der Stelle nicht löschen kann, hängt ganz woanders, das würde jetzt hier wohl zu weit vom Thema wegführen und keinem weiterhelfen, hihi. Ich hab mir jetzt mal damit beholfen, dass ich ein Script geschrieben habe, das die Tabellen löscht. Nicht die schönste Lösung, aber hilft zumindest ein bisschen weiter… Trotzdem vielen Dank!