przywracanie bazy danych Postgres: pg_restore -vs- tylko przy użyciu psql


16

Zrzucam bazę danych Postgres, używając pg_dump (w formacie zwykłego tekstu), a następnie przywracam ją po prostu za pomocą psql (z -fopcją).

Co nasuwa pytanie: czy coś pomijam, nie używając pg_restore, co wydaje się być specjalnym narzędziem do przywracania (w porównaniu do ogólnego psql)?

Mogę kontrolować opcje, takie jak wyłączanie wyzwalaczy i takie za pomocą pg_dumpparametrów. Do czego zatem pg_restoresłuży? formaty zrzutu zwykłego tekstu?


4
Z instrukcji : „ pg_restore to narzędzie do przywracania bazy danych PostgreSQL z archiwum utworzonego przez pg_dump w jednym z formatów innych niż zwykły tekst
a_horse_w_na_nazwa

Odpowiedzi:


19

Jeśli utworzyłeś zrzut w formacie SQL, wszystko, czego możesz użyć, to psql.

Jeśli utworzyłeś zrzut niestandardowego formatu ( pg_dump -Fc) lub formatu katalogu ( pg_dump -Fd), możesz i musisz go użyć pg_restore.

Zrzuty niestandardowe i format katalogów mają wiele zalet w porównaniu ze zwykłymi zrzutami skryptów SQL i używam ich wyłącznie. Możesz wybiórczo przywracać tylko niektóre tabele / schematy, możesz wybrać, czy chcesz uwzględnić tylko schemat, tylko dane, czy oba w czasie przywracania, itp. Wiele opcji, które musisz określić pg_dumpjednocześnie przy zrzutach w formacie SQL, można wybrać podczas przywracania- czas, jeśli korzystasz ze zrzutu niestandardowego formatu i pg_restore.

Gdyby nie kompatybilność wsteczna, jestem pewien, że domyślnym formatem pg_dumpbyłby -Fc(niestandardowy) format.

Nie można przekonwertować zrzutu w formacie SQL na format niestandardowy lub katalogowy bez przywrócenia go do bazy danych PostgreSQL, a następnie zrzucenia przywróconej bazy danych.


Czy można również grupować funkcje zmiany nazw i wykonywać operacje na danych, tak jak w pliku SQL z dobrym wyrażeniem regularnym?
velop

1
Nie, ale możesz pg_restorebez dbnameargumentu zmienić go w zrzut w formacie SQL, jeśli go potrzebujesz. Nie możesz zrobić odwrotnie.
Craig Ringer

@CraigRinger czy jest jakaś różnica prędkości przy użyciu psql vs przy użyciu pg_dump do przywracania?
Nikunj Sardhara

2
@NikunjSardhara Zwykle nie, ale pg_restoreobsługuje przywracanie równoległe, a jeśli go użyjesz, będzie o wiele szybciej.
Craig Ringer
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.