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