respaldar base de datos

PHOTO EMBED

Fri Aug 08 2025 15:13:30 GMT+0000 (Coordinated Universal Time)

Saved by @jrg_300i #php #laravel

1. Usando pg_dump (fuera de psql)
Este es el método más común y recomendado para respaldar una base de datos PostgreSQL.

Respaldar una base de datos completa:
pg_dump -U usuario -h localhost -p 5432 -F c -b -v -f "backup_file.backup" nombre_basedatos

-U: Usuario de PostgreSQL.
-h: Host del servidor (usar localhost si es local).
-p: Puerto (por defecto es 5432).
-F c: Formato personalizado (compacto y comprimido, ideal para restauración).
-b: Incluye objetos grandes (BLOBs).
-v: Modo verbose (muestra detalles del proceso).
-f: Ruta del archivo de salida.
nombre_basedatos: Nombre de la base de datos a respaldar.

Respaldar en formato SQL plano (legible):
pg_dump -U usuario -h localhost -p 5432 -f "backup_file.sql" nombre_basedatos
Sin -F c, se genera un archivo SQL plano (puede ser grande).

Respaldar solo el esquema (sin datos):
pg_dump -U usuario -h localhost -p 5432 -s -f "esquema.sql" nombre_basedatos
-s: Solo estructura (schema), sin datos.

Respaldar tablas específicas:
pg_dump -U usuario -h localhost -p 5432 -t tabla1 -t tabla2 -f "tablas.sql" nombre_basedatos
-t: Especifica las tablas a incluir.

2. Desde la consola psql (exportar datos)
Si ya estás dentro de psql, puedes exportar datos con \copy (pero no es un backup completo como pg_dump):

Exportar una tabla a CSV:
\copy (SELECT * FROM tabla) TO 'ruta/archivo.csv' WITH CSV HEADER;

Exportar resultados de una consulta:
\copy (SELECT col1, col2 FROM tabla WHERE condicion) TO 'ruta/resultado.csv' WITH CSV;

3. Restaurar un backup
Para restaurar un backup creado con pg_dump:
Restaurar backup en formato personalizado (-F c):
pg_restore -U usuario -h localhost -p 5432 -d nombre_basedatos -v "backup_file.backup"

Restaurar backup SQL plano:
psql -U usuario -h localhost -p 5432 -d nombre_basedatos -f "backup_file.sql"

Notas importantes:
PostgreSQL debe estar en el PATH para que funcionen los comandos pg_dump y pg_restore.
Si tienes problemas de permisos, usa sudo -u postgres antes del comando (en Linux).
Para respaldar todas las bases de datos de un cluster, usa pg_dumpall.



content_copyCOPY