'pg_restore' je určeno k obnovení souborů generovaných 'pg_dump'.
Z manuálové stránky
pg_restore je nástroj pro obnovu databáze PostgreSQL z anarchivu vytvořeného pomocí pg_dump(1) v jednom z formátů, které nejsou prostým textem.
https://www.postgresql.org/docs/9.2/static/app-pgrestore.html
Pokud váš soubor vygeneroval pg_dump, pravděpodobně mu budete muset alespoň sdělit, do které databáze se má uložit:
pg_restore -d my_new_database temp.sql
Moje vlastní zkušenost s pg_restore v různých variantách ukazuje, že mnohokrát potřebuji specifikovat formát souboru výpisu, i když byl v 'nativním' formátu, přestože manuálová stránka naznačovala, že by formát detekoval.
pg_restore -d my_new_database -Fc temp.dump
Je to jen odhad, ale myslím si, že pokud byly tabulky skutečně obnoveny, bez uvedení db, byly uloženy do výchozí databáze. Můžete to zkontrolovat uvedením tabulek v databázi 'postgres' (žádné by tam neměly být).
postgres=#\c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#\dt
No relations found.
Pokud se vaše tabulky obnovily do výchozí databáze, budou uvedeny.
Se soubory SQL s prostým textem je třeba zacházet jinak, obvykle se spouští pomocí příkazů SQL pomocí psql.
psql -d my_database < temp.sql
Za předpokladu, že jste vytvořili zálohu databáze podobnou této:
pg_dump -a --inserts databasename > exportfilename.sql
Zkuste soubor obnovit takto:
psql databasename -f exportfilename.sql
Postgres pg_restore
jak je uvedeno výše, je určeno pouze pro použití s dump
soubory, nemůžete to takto obnovit. Zkontrolujte tuto odpověď na oficiálních stránkách postgres.org
V podstatě ne použijte pg_restore
s sql
soubory --->https://www.postgresql.org/message-id/AANLkTi%3DAqmWrUR4f8%2BEfCHzP%2BQrL1%3DunRLZp_jX7SoqF%40mail.gmail.com