ripristino database Postgres: pg_restore -vs- solo usando psql


16

Sto scaricando il mio database Postgres usando pg_dump (in formato testo normale) e poi lo ripristino semplicemente usando psql (con l' -fopzione).

Il che fa sorgere la domanda: mi sto perdendo qualcosa non usando pg_restore che sembra uno strumento di ripristino specializzato (rispetto al generico psql)?

Posso controllare opzioni come la disabilitazione dei trigger e simili usando i pg_dumpparametri. A cosa pg_restoreserve quindi? formati di dump non di testo normale?


4
Dal manuale : " pg_restore è un'utilità per ripristinare un database PostgreSQL da un archivio creato da pg_dump in uno dei formati non di testo semplice "
a_horse_with_no_name

Risposte:


19

Se hai creato un dump in formato SQL, tutto ciò che puoi usare è psql.

Se hai creato un dump formato personalizzato ( pg_dump -Fc) o formato directory ( pg_dump -Fd), puoi e devi utilizzare pg_restore.

I dump personalizzati e in formato directory offrono molti vantaggi rispetto ai semplici dump di script SQL e li utilizzo esclusivamente. Puoi ripristinare selettivamente solo alcune tabelle / schemi, scegliere se includere solo schemi, solo dati o entrambi al momento del ripristino, ecc. Molte opzioni che devi specificare al pg_dumpmomento con i dump in formato SQL possono essere scelte al ripristino- tempo se si utilizza un dump in formato personalizzato e pg_restore.

Se non fosse per compatibilità con le versioni precedenti, sono sicuro che l'impostazione predefinita pg_dumpsarebbe il -Fcformato (personalizzato).

Non è possibile convertire un dump in formato SQL in formato personalizzato o formato directory senza ripristinarlo in un database PostgreSQL e quindi scaricare il DB ripristinato.


È anche possibile rinominare in batch le funzioni e manipolare i dati come si farebbe in un file sql con una buona regexp?
velop,

1
No, ma puoi farlo pg_restoresenza un dbnameargomento per trasformarlo in un dump in formato SQL se ne hai bisogno. Non puoi fare il contrario.
Craig Ringer,

@CraigRinger c'è qualche differenza di velocità usando psql vs usando pg_dump per il ripristino?
Nikunj Sardhara

2
@NikunjSardhara Non di solito, ma pg_restoresupporta il ripristino parallelo e se lo usi sarà MOLTO più veloce.
Craig Ringer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.