Come ripristinare il database postgres in altro nome per il database

Io uso postgres oggi
e hai un problema
Ho il dump del database che modo

 pg_dump zeus_development -U test > zeus_development.dump.out

che se veramente il ripristino di un altro database zeus_production

Come potrei fare?

Nota – potrebbe essere meglio utilizzare uno dei dump binario invece di formato di testo normale. Esso permetterà di accelerare il dump/restore del processo, riduce la dimensione del file di dump e dà alcuni altri modi per controllare il processo di ripristino. Dettagli here

OriginaleL’autore newBike | 2013-10-07

3 Replies
  1. 20

    Semplice, per prima cosa è necessario creare il database utilizzando template0 come modello di database:

    createdb -U test -T template0 zeus_production

    Quindi, ripristinare il dump di database:

    psql -U test zeus_production -f /path/to/zeus_development.dump.out

    In caso di ripristino, utilizzare sempre template0 esplicito, come è sempre vuoto e non modificabili database. Se non si utilizza un esplicito modello, PostgreSQL assumerà template1, e se si dispone di alcuni oggetti, come un tavolo o una funzione che il database scaricato già, si ottengono alcuni errori durante il ripristino.

    Tuttavia, anche se si trattava di ripristino su un database con lo stesso nome (zeus_development) si dovrebbe creare (o ricreare) allo stesso modo. A meno che non hai usato -C opzione mentre dumping (o -C di pg_restore se si utilizza un dump binario), che io non consiglio, perché avrà meno flessibilità (come il ripristino su un altro nome del database).

    OriginaleL’autore MatheusOl

  2. 8

    Il PostgresSQL documentazione mi ha influenzato di utilizzare il formato personalizzato. L’ho usata per anni e sembra avere diversi vantaggi, ma il vostro chilometraggio può variare. Detto questo, qui è che cosa ha funzionato per me:

    pg_restore --no-owner --dbname postgres --create ~/Desktop/pg_dump 
    psql --dbname postgres -c 'ALTER DATABASE foodog_production RENAME TO foodog_development'

    Non c’era foodog_developmentfoodog_production basi di dati esistenti prima della sequenza.

    Questo consente di ripristinare il database dal dump (~/Desktop/pg_dump) che si crea con il nome che le è stato oggetto di dumping come. La rinominare i nomi DB a tutto ciò che si desidera.

    Il --no-owner potrebbe non essere necessario se il nome utente è lo stesso su entrambe le macchine. Nel mio caso, il dump è stato fatto, come user1 e il ripristino fatto come user2. I nuovi oggetti devono essere di proprietà user2 e --no-owner realizza questo.

    Io uso il formato personalizzato universalmente, perché il testo in formato spesso non riesce a ripristinare. Questa risposta è la più utile per me.

    OriginaleL’autore pedz

  3. 1

    Non è facile, semplicemente?

    createdb -U test -T zeus_development zeus_production
    In realtà, al di sopra non funziona. La domanda originale non parlare di lui era di passare a un nuovo computer. E ‘ stato appena assunto. L’opzione-T è abbastanza potenza.

    OriginaleL’autore Ricardo Coelho

Lascia un commento