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 -f
opcją).
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_dump
parametrów. Do czego zatem pg_restore
służy? formaty zrzutu zwykłego tekstu?
postgresql
postgresql-9.1
Marcus Junius Brutus
źródło
źródło
Odpowiedzi:
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_dump
jednocześnie przy zrzutach w formacie SQL, można wybrać podczas przywracania- czas, jeśli korzystasz ze zrzutu niestandardowego formatu ipg_restore
.Gdyby nie kompatybilność wsteczna, jestem pewien, że domyślnym formatem
pg_dump
był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.
źródło
pg_restore
bezdbname
argumentu zmienić go w zrzut w formacie SQL, jeśli go potrzebujesz. Nie możesz zrobić odwrotnie.pg_restore
obsługuje przywracanie równoległe, a jeśli go użyjesz, będzie o wiele szybciej.