'pg_restore' soll Dateien wiederherstellen, die von 'pg_dump' generiert wurden.
Aus der Manpage
pg_restore ist ein Dienstprogramm zum Wiederherstellen einer PostgreSQL-Datenbank aus einem Archiv, das von pg_dump(1) in einem der Nicht-Klartext-Formate erstellt wurde.
https://www.postgresql.org/docs/9.2/static/app-pgrestore.html
Wenn Ihre Datei von pg_dump generiert wurde, müssen Sie ihr wahrscheinlich zumindest mitteilen, in welche Datenbank sie ausgegeben werden soll:
pg_restore -d my_new_database temp.sql
Meine eigene Erfahrung mit pg_restore in verschiedenen Varianten zeigt, dass ich oft das Format der Dump-Datei angeben muss, selbst wenn es sich um ein „natives“ Format handelt, obwohl die Manpage anzeigt, dass es das Format erkennen würde.
pg_restore -d my_new_database -Fc temp.dump
Dies ist nur eine Vermutung, aber ich denke, wenn die Tabellen tatsächlich wiederhergestellt wurden, ohne die Datenbank anzugeben, wurden sie in die Standarddatenbank abgelegt. Sie können dies überprüfen, indem Sie die Tabellen in der Datenbank „postgres“ auflisten (es sollte keine vorhanden sein).
postgres=#\c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#\dt
No relations found.
Wenn Ihre Tabellen in der Standarddatenbank wiederhergestellt wurden, werden sie aufgelistet.
Nur-Text-SQL-Dateien müssen anders behandelt werden, normalerweise werden sie über SQL-Befehle mit psql ausgeführt.
psql -d my_database < temp.sql
Angenommen, Sie haben Ihre Datenbanksicherung ähnlich wie hier erstellt:
pg_dump -a --inserts databasename > exportfilename.sql
Versuchen Sie, Ihre Datei wie folgt wiederherzustellen:
psql databasename -f exportfilename.sql
Postgres pg_restore
wie oben erwähnt, soll nur mit dump
verwendet werden Dateien, Sie können es so nicht wiederherstellen. Suchen Sie nach dieser Antwort auf der offiziellen postgres.org-Website
Im Grunde nicht Verwenden Sie pg_restore
mit sql
Dateien --->https://www.postgresql.org/message-id/AANLkTi%3DAqmWrUR4f8%2BEfCHzP%2BQrL1%3DunRLZp_jX7SoqF%40mail.gmail.com