Saya mengambil cadangan menggunakan
pg_dump db_production > postgres_db.dump
dan kemudian saya salin ke localhost menggunakan scp.
Sekarang ketika saya mengimpor di db lokal saya, itu memberikan kesalahan
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
dengan menggunakan baris perintah
pg_restore -d db_development postgres_db.dump
sumber
Jawaban di atas tidak berhasil untuk saya, ini berhasil:
psql db_development < postgres_db.dump
sumber
Bagi saya ketika saya mencoba memulihkan dari host jarak jauh yang saya gunakan
bekerja dengan baik. Dan jika tidak remote hanya mengikuti perintah bekerja.
sumber
Untuk membuat cadangan menggunakan
pg_dump
yang kompatibel denganpg_restore
Anda harus menggunakan--format=custom
/-Fc
saat membuat dump Anda.Dari dokumen:
Jadi
pg_dump
perintah Anda mungkin terlihat seperti:Dan
pg_restore
perintah Anda :sumber
Bagi saya, ini berfungsi seperti ini. C: \ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql
sumber
jika Anda menggunakan pg_dump dengan -Fp untuk membuat cadangan dalam format teks biasa, gunakan perintah berikut:
untuk menyalin semua data ke database Anda dengan nama dbname
sumber
Jika Anda memiliki dump DB lengkap:
Namun, jika Anda memiliki skema yang disimpan secara terpisah, itu tidak akan berhasil. Maka Anda harus menonaktifkan pemicu untuk penyisipan data, seperti
pg_restore --disable-triggers
. Anda kemudian dapat menggunakan ini:cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin
Di samping catatan, ini adalah sisi negatif postgres yang sangat disayangkan, menurut saya. Cara default untuk membuat dump in
pg_dump
tidak kompatibel denganpg_restore
. Dengan beberapa kunci tambahan, bagaimanapun, itu benar. WTF?sumber