sql >> Databáze >  >> RDS >> PostgreSQL

Postgres pg_dump vypíše databázi pokaždé v jiném pořadí

Zde je praktický skript pro předběžné zpracování pg_dump výstup, aby byl vhodnější pro porovnávání a ukládání ve správě verzí:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py rozdělí výpis do následujících souborů:

  • 0000_prologue.sql :vše až do první KOPIE
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :data pro každou tabulku seřazená podle prvního pole
  • 9999_epilogue.sql :vše po poslední KOPII

Soubory pro data tabulky jsou očíslovány, takže k opětovnému vytvoření databáze lze použít jednoduché seřazené zřetězení všech souborů:

$ cat *.sql | psql <database>

Zjistil jsem, že dobrý způsob, jak se rychle podívat na rozdíly mezi výpisy, je použít meld nástroj na celý adresář:

$ meld old-dump/ new-dump/

Uložení výpisu do správy verzí také poskytuje slušný pohled na rozdíly. Zde je návod, jak nakonfigurovat git pro použití barev v rozdílech:

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

Poznámka: Pokud jste vytvořili/zahodili/přejmenovali tabulky, nezapomeňte smazat všechny .sql souborů před následným zpracováním nového výpisu.



  1. Práce na Postgres-XL 9.5

  2. Existuje způsob, jak vynutit, aby OracleCommand.BindByName byl ve výchozím nastavení pro ODP.NET pravdivý?

  3. Jak používáte proměnné skriptu v psql?

  4. Replikace MySQL s ProxySQL na serverech WHM/cPanel:Část druhá