pg_dump

pg_dump: extrae una base de datos PostgreSQL en un archivo de script u otro archivo de almacenamiento en formato comprimido

Descripción

pg_dump es una utilidad para realizar copias de seguridad de una base de datos PostgreSQL. Realiza copias de seguridad coherentes ( incluso si la base de datos se utiliza al mismo tiempo ). pg_dump no bloquea el acceso de otros usuarios a la base de datos.

pg_dump solo vuelca una sola base de datos. Para respaldar un clúster completo incluido objetos globales que son comunes a todas las bases de datos en un clúster (como roles y espacios de tablas), revisar la utilidad pg_dumpall.

Los volcados son archivos de texto sin formato que contienen los comandos SQL necesarios para reconstruir la base de datos al estado en el que se encontraba en el momento que se guardó.


Opciones de línea de comandos

Esta utilidad de línea de comandos acepta las siguientes opciones al momento de invocarla:

Empleo:
pg_dump [BASE-DE-DATOS [USUARIO]] ... [OPCIONES]
        
OPCIONES:
  dbname
  Especifica el nombre de la base de datos
  Si no se especifica, se utiliza la variable de entorno PGDATABASE
  Si no está definida se utiliza el nombre de usuario especificado para la conexión
  -a, --data-only
  Vuelca solo los datos, no el esquema, es decir no contempla los comandos (DML)
  -b, --blobs
  Incluye objetos grandes. Esta opción por defecto
  -c, --clean 
  Con esta opción se agrega el comando DROP al comienzo del script antes de crear los objetos
  -B, --no-blobs
  Excluir objetos grandes al volcar la base de datos
  -C, --create 
  Vuelca la salida con un comando para crear la base de datos y vuelve a conectarse a la base de datos creada
  -f file,--file=file 
  Envía la salida al archivo especificado
  --no-comments 
  No volcar comentarios
  --inserts
  Volcar datos con comandos INSERT (en vez de COPY). Esto hará que la restauración sea más lenta; es principalmente útil para realizar volcados que se pueden cargar en sistemas gestores que no sean PostgreSQL
  --if-exists 
  Agrega comandos condicionales (es decir, añade la cláusula IF EXISTS). Esta opción sólo es válida cuando se especifica la opción --clean
  -s, --schema-only 
  Vuelca solo las definiciones de objetos (esquema), no los datos
        
        
Opciones de conexión:
  -d, --dbname=NOMBRE 
  nombre de la base de datos a la que se conectará
  -h, --host=NOMBRE 
  nombre del anfitrión o directorio de socket (por omisión: «socket local»)
  -p, --port=PUERTO 
  puerto del servidor (por omisión: «5432»)
  -U, --username=NOMBRE 
  nombre de usuario (por omisión: «postgres»)
  -w, --no-password 
  nunca pedir contraseña
  -W, --password 
  forzar petición de contraseña (debería ser automático)
      

pg_restore

pg_restore es una utilidad para restaurar una base de datos PostgreSQL desde un archivo creado por pg_dump

Descripción

pg_restore puede operar en dos modos. Si se especifica un nombre de base de datos, pg_restore se conecta a esa base de datos y restaura el contenido del archivo directamente en la base de datos. De lo contrario, se crea un script que contiene los comandos SQL necesarios para reconstruir la base de datos y se escribe en un archivo o salida estándar.


Ejemplos

Volcar solo los datos contenidos en las tablas de la base de datos empleando comandos INSERT

pg_dump mydb -U postgres -a --insert > datos.sql 

Cargar un script sql a una base de datos recien creada llamada nuevaDB

psql -d nuevaDB -f db.sql 

Para volcar una base de datos en un archivo de almacenamiento

pg_dump -Fc mydb > db.dump 

Para volver a cargar un archivo comprimido en una base de datos (recién creada) denominada nuevaDB

pg_restore -U postgres -d nuevaDB db.dump