PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres pg_dump sichert die Datenbank jedes Mal in einer anderen Reihenfolge

Hier ist ein praktisches Skript zur Vorverarbeitung von pg_dump Ausgabe, um sie besser zum Vergleichen und Speichern in der Versionskontrolle geeignet zu machen:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py teilt den Dump in die folgenden Dateien auf:

  • 0000_prologue.sql :alles bis zur ersten KOPIE
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :Daten für jede Tabelle sortiert nach dem ersten Feld
  • 9999_epilogue.sql :alles nach der letzten KOPIE

Die Dateien für Tabellendaten sind nummeriert, so dass eine einfache sortierte Verkettung aller Dateien verwendet werden kann, um die Datenbank neu zu erstellen:

$ cat *.sql | psql <database>

Ich habe festgestellt, dass ein guter Weg, um einen schnellen Blick auf die Unterschiede zwischen Dumps zu werfen, die Verwendung von meld ist Tool auf das gesamte Verzeichnis:

$ meld old-dump/ new-dump/

Das Speichern des Dumps in der Versionskontrolle gibt auch einen guten Überblick über die Unterschiede. So konfigurieren Sie Git für die Verwendung von Farbe in Diffs:

# ~/.gitconfig
[color]
        diff = true
[color "diff"]
        frag = white blue bold
        meta = white green bold
        commit = white red bold

Hinweis: Wenn Sie Tabellen erstellt/gelöscht/umbenannt haben, denken Sie daran, alle .sql zu löschen Dateien vor der Nachbearbeitung des neuen Dumps.