Saya mencoba menjalankan perintah berikut:
sshpass -p "pass" ssh x@1.2.3.4 "pg_dump -Fc -U foo some_db" | pg_restore --create --dbname=new_db
Saya mendapat:
failed: FATAL: database "new_db" does not exist
postgresql
postgresql-9.3
psql
andilab
sumber
sumber
pg_restore
. Opsi -C hanya dapat membuat database yang namanya cocok dengan nama database di file dump. Untuk mengembalikan ke database yang berubah-ubah, Anda harus menjalankanCREATE DATABASE new_db;
dalam psql sebelum Anda menjalankanpg_restore --dbname=new_db
.docker-compose -p dump_import -f docker/dump_import.yml run --rm be bash -c 'waitforit -host=postgres -port=5432 -timeout=30 && export PGPASSWORD=$DATABASE_PASSWORD && createdb --echo --port=$DATABASE_PORT -host=$DATABASE_HOST --username=$DATABASE_USER $DATABASE_NAME && pg_restore --format=c --dbname=$DATABASE_URL_WITHOUT_QUERY tmp/full.dump && echo "Import done"'
Singkatnya, Anda ingin (bersih yang sudah ada): (perhatikan nama database-nya
postgres
)atau (buat baru)
atau (buat baru secara eksplisit)
Lihat apa yang dikatakan SCO untuk lebih jelasnya.
sumber
pg_restore: [archiver] -C and -c are incompatible options
pg_restore -C -d postgres db.dump
mungkin terlihat menakutkan, tetapi tidak melakukan apa pun pada database postgres, ia hanya menggunakannya untuk koneksi awal.Untuk sedikit lebih eksplisit, inilah yang saya lakukan yang memecahkan masalah bagi saya:
Buat database kosong dengan nama yang Anda inginkan: (dalam kasus saya nama pengguna adalah 'postgres')
Ini akan menanyakan kata sandi Anda. Pada titik ini Anda akan masuk sebagai [nama pengguna]. Ketikkan yang berikut ini:
Sekarang keluar dari sesi dan kembali ke sesi terminal reguler Anda.
Kembalikan database dari file yang telah Anda atur nama database target sebagai nama database yang baru saja Anda buat.
Di mana [nama_file_path / nama file] adalah lokasi file db atau file teks yang ingin Anda pulihkan.
sumber
-F
opsi de Anda harus menggunakan pg_restore untuk mengembalikan cadangan kecuali Anda menggunakan-F p
yang menghasilkan file teks biasa dengan kalimat sql.