2009-04-30 27 views
23

¿Existe una manera simple de crear una copia de una base de datos o esquema en PostgreSQL 8.1?PostgreSQL ¿cómo crear una copia de una base de datos o esquema?

Estoy probando un software que hace muchas actualizaciones de un esquema particular dentro de una base de datos, y me gustaría hacer una copia para poder realizar algunas comparaciones con el original.

Respuesta

27

Si está en el mismo servidor, simplemente use el comando CREATE DATABASE con el parámetro TEMPLATE. Por ejemplo:

CREATE DATABASE newdb WITH TEMPLATE olddb; 
+8

esto también copió los datos a la nueva base de datos ... ¿algún método relacionado para hacerlo sin datos ??? –

+1

O '$ createdb -T olddb newdb' –

20

pg_dump con la opción --schema-only.

+4

Reemplace "7.4" por "actual" y tiene un enlace a la última versión. – bortzmeyer

+0

Acabo de hacer eso – artm

0

aquí hay un enlace a algunos examples de copia de seguridad y restauración. Puede usar la copia de seguridad para restaurar a un servidor diferente o lo que sea

8

Si tiene que copiar el esquema de la base de datos local a una base de datos remota, puede utilizar una de las dos opciones siguientes.

Opción A

  1. Copiar el esquema de la base de datos local a un archivo de volcado.

    pg_dump -U postgres -Cs database > dump_file 
    
  2. Copia el archivo de volcado desde el servidor local al servidor remoto.

    scp [email protected]:dump_file [email protected]:dump_file 
    
  3. Conectarse al servidor remoto.

    ssh [email protected] 
    
  4. Copiar el esquema del archivo de volcado de la base de datos remota.

    psql -U postgres database < dump_file 
    

Opción B

Copiar el esquema directamente desde la base de datos local a la base de datos remota sin necesidad de utilizar un archivo intermedio.

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

Este blog post podría ser útil para usted si desea obtener más información sobre las opciones para la copia de la base de datos utilizando pg_dump.

+0

# 3 dice' db_name' no existe. ¿Hay alguna manera de restaurar desde el esquema sin crear la base de datos anterior? –

+0

¡La opción A funciona bien! Gracias amigo –

Cuestiones relacionadas