PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Ripristinare un file di backup postgres utilizzando la riga di comando?

Ci sono due strumenti da esaminare, a seconda di come hai creato il file dump.

La tua prima fonte di riferimento dovrebbe essere la pagina man pg_dump(1) poiché questo è ciò che crea il dump stesso. Dice:

I dump possono essere generati in formati di file di script o di archivio. I dump di script sono file di testo normale contenenti i comandi SQL necessari per ricostruire il database nello stato in cui si trovava al momento del salvataggio. Ripristina da tale script, alimentalo con topsql(1). I file di script possono essere utilizzati per ricostruire il database anche su altre macchine e altre architetture; con alcune modifiche anche su altri prodotti di database SQL.

I formati di file di archivio alternativi devono essere utilizzati con pg_restore(1) per ricostruire il database. Consentono a pg_restore di essere selettivo su ciò che viene ripristinato o persino di riordinare gli elementi prima di essere ripristinati. I formati di file di archivio sono progettati per essere portabili in tutte le architetture.

Quindi dipende dal modo in cui è stato scaricato. Probabilmente puoi capirlo usando l'eccellente file(1) comando - se menziona testo ASCII e/o SQL, dovrebbe essere ripristinato con psql altrimenti dovresti probabilmente usare pg_restore

Il ripristino è piuttosto semplice:

psql -U username -d dbname < filename.sql

-- For Postgres versions 9.0 or earlier
psql -U username -d dbname -1 -f filename.sql

o

pg_restore -U username -d dbname -1 filename.dump

Dai un'occhiata alle rispettive manpage:ci sono alcune opzioni che influiscono sul funzionamento del ripristino. Potrebbe essere necessario ripulire i database "live" o ricrearli da template0 (come sottolineato in un commento) prima del ripristino, a seconda di come sono stati generati i dump.