sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres pg_dump dumpar databasen i en annan ordning varje gång

Här är ett praktiskt skript för förbearbetning av pg_dump output för att göra den mer lämpad för diffing och lagring i versionskontroll:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py delar upp dumpen i följande filer:

  • 0000_prologue.sql :allt fram till första KOPIA
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :data för varje tabell sorterad efter det första fältet
  • 9999_epilogue.sql :allt efter den senaste KOPIA

Filerna för tabelldata är numrerade så en enkel sorterad sammansättning av alla filer kan användas för att återskapa databasen:

$ cat *.sql | psql <database>

Jag har upptäckt att ett bra sätt att ta en snabb titt på skillnader mellan dumpar är att använda meld verktyg i hela katalogen:

$ meld old-dump/ new-dump/

Att lagra dumpningen i versionskontroll ger också en hygglig bild av skillnaderna. Så här konfigurerar du git att använda färg i diff:

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

Obs! Om du har skapat/släppt/döpt om tabeller, kom ihåg att ta bort alla .sql filer innan efterbearbetning av den nya dumpen.



  1. Hur man delar en sträng i MySQL

  2. SQL Server Databas Change Listener C#

  3. UPPDATERA om det finns annat INSERT i SQL Server 2008

  4. Adminer – Ett avancerat webbaserat databasadministrationsverktyg för Linux