2009-04-30 13 views
23

C'è un modo semplice per creare una copia di un database o di uno schema in PostgreSQL 8.1?PostgreSQL come creare una copia di un database o di uno schema?

Sto testando alcuni software che apportano molti aggiornamenti a uno schema particolare all'interno di un database, e mi piacerebbe farne una copia in modo da poter eseguire alcuni confronti con l'originale.

risposta

27

Se si trova sullo stesso server, utilizzare semplicemente il comando CREATE DATABASE con il parametro TEMPLATE. Per esempio:

CREATE DATABASE newdb WITH TEMPLATE olddb; 
+8

questo anche copiato i dati nel nuovo database ... qualsiasi metodo correlato per farlo senza dati ??? –

+1

Oppure '$ createdb -T olddb newdb' –

20

pg_dump con l'opzione --schema-only.

+4

Sostituire "7.4" con "corrente" e si dispone di un collegamento alla versione più recente. – bortzmeyer

+0

Ho appena fatto quello – artm

0

questo è un collegamento ad alcuni examples di backup e ripristino. È possibile utilizzare il backup per ripristinare su un server diverso o qualsiasi altra cosa

8

Se si deve copiare lo schema dal database locale a un database remoto, è possibile utilizzare una delle seguenti due opzioni.

Opzione A

  1. Copiare lo schema dal database locale a un file di dump.

    pg_dump -U postgres -Cs database > dump_file 
    
  2. Copia il file di dump dal server locale al server remoto.

    scp [email protected]:dump_file [email protected]:dump_file 
    
  3. Connessione al server remoto.

    ssh [email protected] 
    
  4. Copia lo schema dal file di dettagli nel database remoto.

    psql -U postgres database < dump_file 
    

Opzione B

Copiare lo schema direttamente dal database locale al database remoto senza l'utilizzo di un file intermedio.

pg_dump -h localhost -U postgres -Cs database | psql -h remotehost -U postgres database 

Questo blog post potrebbe rivelarsi utile per voi, se volete saperne di più su opzioni per copiare il database utilizzando pg_dump.

+0

# 3 dice' db_name' non esiste. C'è un modo per ripristinare dallo schema senza creare il db in precedenza. –

+0

L'opzione A funziona bene! Grazie amico –

Problemi correlati