'pg_restore' dimaksudkan untuk memulihkan file yang dihasilkan oleh 'pg_dump'.
Dari halaman manual
pg_restore adalah utilitas untuk memulihkan database PostgreSQL dari anarki yang dibuat oleh pg_dump(1) dalam salah satu format non-teks biasa.
https://www.postgresql.org/docs/9.2/static/app-pgrestore.html
Jika file Anda dihasilkan oleh pg_dump, Anda mungkin perlu setidaknya memberi tahu database mana yang akan dibuang:
pg_restore -d my_new_database temp.sql
Pengalaman saya sendiri dengan pg_restore dalam berbagai rasa menunjukkan bahwa berkali-kali saya perlu menentukan format file dump, meskipun itu dalam format 'asli', meskipun halaman manual menunjukkan bahwa itu akan mendeteksi formatnya.
pg_restore -d my_new_database -Fc temp.dump
Ini hanya tebakan, tapi saya berpikir jika tabel benar-benar dipulihkan, tanpa menentukan db, tabel tersebut dibuang ke database default. Anda dapat memeriksanya dengan mendaftar tabel di database 'postgres' (seharusnya tidak ada).
postgres=#\c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#\dt
No relations found.
Jika tabel Anda dipulihkan ke database default, tabel tersebut akan dicantumkan.
File SQL teks biasa perlu diperlakukan secara berbeda, biasanya dijalankan melalui perintah SQL menggunakan psql.
psql -d my_database < temp.sql
Dengan asumsi Anda membuat cadangan basis data Anda seperti ini:
pg_dump -a --inserts databasename > exportfilename.sql
Coba pulihkan file Anda seperti ini:
psql databasename -f exportfilename.sql
Postgres pg_restore
seperti yang disebutkan di atas hanya dimaksudkan untuk digunakan dengan dump
file, Anda tidak dapat mengembalikannya seperti itu. Periksa jawaban ini di situs resmi postgres.org
Pada dasarnya Anda tidak gunakan pg_restore
dengan sql
file --->https://www.postgresql.org/message-id/AANLkTi%3DAqmWrUR4f8%2BEfCHzP%2BQrL1%3DunRLZp_jX7SoqF%40mail.gmail.com