'pg_restore' ha lo scopo di ripristinare i file generati da 'pg_dump'.
Dalla pagina man
pg_restore è un'utilità per il ripristino di un database PostgreSQL da un archivio creato da pg_dump(1) in uno dei formati non di testo semplice.
https://www.postgresql.org/docs/9.2/static/app-pgrestore.html
Se il tuo file è stato generato da pg_dump, probabilmente devi almeno dirgli in quale database eseguire il dump:
pg_restore -d my_new_database temp.sql
La mia esperienza con pg_restore in diverse versioni mostra che molte volte ho bisogno di specificare il formato del file di dump, anche se era in formato "nativo", nonostante la manpage indichi che avrebbe rilevato il formato.
pg_restore -d my_new_database -Fc temp.dump
Questa è solo un'ipotesi, ma penso che se le tabelle fossero effettivamente ripristinate, senza specificare il db, sarebbero state scaricate nel database predefinito. Puoi verificarlo elencando le tabelle nel database "postgres" (non dovrebbero essercene).
postgres=#\c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#\dt
No relations found.
Se le tue tabelle sono state ripristinate nel database predefinito, verranno elencate.
I file SQL di testo normale devono essere trattati in modo diverso, di solito eseguiti tramite comandi SQL utilizzando psql.
psql -d my_database < temp.sql
Supponendo che tu abbia generato il backup del tuo database simile a questo:
pg_dump -a --inserts databasename > exportfilename.sql
Prova a ripristinare il file in questo modo:
psql databasename -f exportfilename.sql
Postgres pg_restore
come menzionato sopra è inteso solo per essere usato con dump
file, non è possibile ripristinarlo in questo modo. Controlla questa risposta nel sito web ufficiale postgres.org
Fondamentalmente non usa pg_restore
con sql
files --->https://www.postgresql.org/message-id/AANLkTi%3DAqmWrUR4f8%2BEfCHzP%2BQrL1%3DunRLZp_jX7SoqF%40mail.gmail.com