PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres pg_dump изхвърля базата данни в различен ред всеки път

Ето удобен скрипт за предварителна обработка на pg_dump изход, за да го направи по-подходящ за дифференциране и съхранение в контрола на версиите:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py разделя дъмпа на следните файлове:

  • 0000_prologue.sql :всичко до първото КОПИЕ
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :данни за всяка таблица сортирани по първото поле
  • 9999_epilogue.sql :всичко след последното КОПИЕ

Файловете за таблични данни са номерирани, така че може да се използва проста сортирана конкатенация на всички файлове за повторно създаване на база данни:

$ cat *.sql | psql <database>

Открих, че добър начин да разгледате бързо разликите между изхвърлянията е да използвате meld инструмент за цялата директория:

$ meld old-dump/ new-dump/

Съхраняването на дъмпа в контрола на версиите също дава приличен поглед върху разликите. Ето как да конфигурирате git да използва цвят в разликите:

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

Забележка: Ако сте създали/изпуснали/именували таблици, не забравяйте да изтриете всички .sql файлове преди последваща обработка на новия дъмп.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се справя с отварянето/затварянето на Db връзка в Go приложение?

  2. Как да намерите името на ограничение в PostgreSQL

  3. Проактивно наблюдение на PostgreSQL (ъгъл на Developer Studio/Advisors)

  4. SQL заявка за намиране на запис с идентификатор, който не е в друга таблица

  5. PSQLException:текущата транзакция е прекратена, командите се игнорират до края на блока на транзакцията