PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres pg_dump esegue il dump del database ogni volta in un ordine diverso

Ecco un pratico script per la pre-elaborazione di pg_dump output per renderlo più adatto alla differenziazione e alla memorizzazione nel controllo della versione:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py divide il dump nei seguenti file:

  • 0000_prologue.sql :tutto fino alla prima COPIA
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :dati per ogni tabella ordinati per il primo campo
  • 9999_epilogue.sql :tutto dopo l'ultima COPIA

I file per i dati delle tabelle sono numerati in modo da poter utilizzare una semplice concatenazione ordinata di tutti i file per ricreare il database:

$ cat *.sql | psql <database>

Ho scoperto che un buon modo per dare una rapida occhiata alle differenze tra i dump è usare meld strumento sull'intera directory:

$ meld old-dump/ new-dump/

La memorizzazione del dump nel controllo della versione offre anche una visione decente delle differenze. Ecco come configurare git per usare il colore nelle differenze:

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

Nota: Se hai creato/eliminato/rinominato tabelle, ricorda di eliminare tutti i .sql file prima di elaborare il nuovo dump.