Export Import postgres dengan pg_dump dan pg_restore
Preambule
Mari kita mulai dengan hal yang membosankan.
pg_dump : is a utility for backing up a PostgreSQL database. It makes consistent backups even if the database is being used concurrently. pg_dump does not block other users accessing the database (readers or writers).
Kenapa saya tidak tahu ada tools ini? Karena biasanya database lokal yang dibuat mainan adalah MySQL. Benar saja, tools ini dapat kita gunakan tanpa harus menunggu database yang digunakan untuk idle. Intinya, kita bisa langsung menggunakan tools ini, meskipun jika ada data baru kemungkinan akan terlewat. GAS!
pg_restore : is a utility for restoring a PostgreSQL database from an archive created by pg_dump in one of the non-plain-text formats. It will issue the commands necessary to reconstruct the database to the state it was in at the time it was saved. The archive files also allow pg_restore to be selective about what is restored, or even to reorder the items prior to being restored. The archive files are designed to be portable across architectures.
Setelah berhasil backup, tentu harus di-restore. Tapi kenapa saya harus menggunakan tool ini? Sebagai pengguna biasa, saya belum pernah menemui database yang rumit, maksudnya memiliki constraint yang aneh, dan ketika database yang saya backup dengan SQL tidak bisa di-restore dengan mudah, ini adalah satu-satunya cara.
Menggunakan pg_dump
Ada banyak cara, tapi saya suka dengan perintah ini:
pg_dump -v -Fc --no-acl --no-owner --no-table-access-method --disable-triggers --host=[host] --username=[username] --dbname=[database] --password -f [namafile]
pg_dump
Penjelasan:
-v
: verbose-Fc
: menggunakan custom format yang cocok untuk digunakan dipg_restore
, sudah di kompres secara default.--no-acl
: dump tanpa access privilage, karena asumsinya kita berpindah server, dan tentu pemiliknya berbeda.--no-owner
: sama seperti diatas, supaya authorship tidak ikut di dump.--no-table-access-method
: sama juga seperti diatas.--disable-triggers
: untuk menunda sementara pembuatan constraint.
Menggunakan pg_restore
Perintah pg_restore
sebenarnya sama seperti
pg_dump
di atas, namun terkadang kita tidak perlu
menambahkan argumen lain karena kita sudah menggunakan custom
format saat melakukan dump. Namun untuk lebih amannya, akan saya
tulis ulang:
pg_restore -v -Fc --no-acl --no-owner --no-table-access-method --disable-triggers --host=[host] --username=[username] --dbname=[database] --password [namafile]
pg_restore
Selesai!
Ya, memang cuma itu. Saran saya selanjutnya, karena sudah bersusah
payah dump dan restore, kamu bisa menjalankan
VACUUM
atau VACUUM ANALYZE
.