PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres pg_dump membuang basis data dalam urutan yang berbeda setiap saat

Berikut adalah skrip praktis untuk pra-pemrosesan pg_dump output agar lebih cocok untuk diffing dan disimpan dalam kontrol versi:

https://github.com/akaihola/pgtricks

pg_dump_splitsort.py membagi dump menjadi file-file berikut:

  • 0000_prologue.sql :semuanya hingga COPY pertama
  • 0001_<schema>.<table>.sql
    .
    .
    NNNN_<schema>.<table>.sql :data untuk setiap tabel diurutkan berdasarkan kolom pertama
  • 9999_epilogue.sql :semuanya setelah SALINAN terakhir

File untuk data tabel diberi nomor sehingga rangkaian sederhana yang diurutkan dari semua file dapat digunakan untuk membuat ulang database:

$ cat *.sql | psql <database>

Saya telah menemukan bahwa cara yang baik untuk melihat sekilas perbedaan antara dump adalah dengan menggunakan meld alat di seluruh direktori:

$ meld old-dump/ new-dump/

Menyimpan dump dalam kontrol versi juga memberikan pandangan yang layak tentang perbedaannya. Berikut cara mengonfigurasi git untuk menggunakan warna dalam perbedaan:

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

Catatan: Jika Anda telah membuat/menjatuhkan/mengganti nama tabel, ingatlah untuk menghapus semua .sql file sebelum memproses dump baru.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tentang indeks berkerumun di postgres

  2. PostgreSQL:nama batasan default

  3. Bagaimana cara membandingkan tanggal di bidang datetime di Postgresql?

  4. Bagaimana Extract() Bekerja di PostgreSQL

  5. Ubah nilai awal Django AutoField