sql >> Database >  >> RDS >> PostgreSQL

Postgres pg_dump dumpt database elke keer in een andere volgorde

Hier is een handig script voor het voorbewerken van pg_dump output om het geschikter te maken voor differentiëren en opslaan in versiebeheer:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py splitst de dump in de volgende bestanden:

  • 0000_prologue.sql :alles tot de eerste KOPIE
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :gegevens voor elke tabel gesorteerd op het eerste veld
  • 9999_epilogue.sql :alles na de laatste KOPIE

De bestanden voor tabelgegevens zijn genummerd, zodat een eenvoudige gesorteerde aaneenschakeling van alle bestanden kan worden gebruikt om de database opnieuw te maken:

$ cat *.sql | psql <database>

Ik heb ontdekt dat een goede manier om snel de verschillen tussen dumps te bekijken, is om de meld te gebruiken tool op de hele directory:

$ meld old-dump/ new-dump/

Het opslaan van de dump in versiebeheer geeft ook een goed beeld van de verschillen. Hier leest u hoe u git configureert om kleur in diffs te gebruiken:

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

Opmerking: Als je tabellen hebt gemaakt/verwijderd/hernoemd, vergeet dan niet om alle .sql te verwijderen bestanden voordat u de nieuwe dump nabewerkt.



  1. Async I/O-intensieve code werkt langzamer dan niet-async, waarom?

  2. Database wordt niet verwijderd wanneer de Android-applicatie wordt verwijderd

  3. FOUT:kolom van relatie bestaat niet PostgreSQL, kan invoegquery niet uitvoeren

  4. Een array invoegen met behulp van Sequel gem in PostgreSQL