ver una restaurar puede postgres por eliminar datos databases crear consultar consola como comandos cambiar básicos activa database backup postgresql

database - una - restaurar base de datos postgresql



Postgres: borre toda la base de datos antes de volver a crear/volver a llenar desde el script bash (5)

Aunque la siguiente línea se toma de una secuencia de comandos de lote de Windows, el comando debería ser bastante similar:

psql -U username -h localhost -d postgres -c "DROP DATABASE /"$DATABASE/";"

Este comando se usa para borrar toda la base de datos, dejándola caer. La $DATABASE (en Windows debe ser %DATABASE% ) en el comando es una variable de entorno de estilo de Windows que evalúa el nombre de la base de datos. Deberá sustituirlo por su development_db_name .

Estoy escribiendo un script de shell (se convertirá en un cronjob) que:

1: volcar mi base de datos de producción

2: importar el volcado en mi base de datos de desarrollo

Entre los pasos 1 y 2, necesito borrar la base de datos de desarrollo (¿soltar todas las tablas?). ¿Cómo se logra esto mejor a partir de un script de shell? Hasta ahora, se ve así:

#!/bin/bash time=`date ''+%Y''-''%m''-''%d''` # 1. export(dump) the current production database pg_dump -U production_db_name > /backup/dir/backup-${time}.sql # missing step: drop all tables from development database so it can be re-populated # 2. load the backup into the development database psql -U development_db_name < backup/dir/backup-${time}.sql


He usado:

pg_restore -c -d database_name filename.dump


Para volcar:

pg_dump -Fc mydb > db.dump

Para restaurar:

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d my_db db/latest.dump


Si no necesita una copia de seguridad de la base de datos volcada en el disco en un formato de archivo de script .sql de texto sin formato, puede conectar pg_dump y pg_restore directamente a través de un conducto.

Para descartar y volver a crear tablas, puede usar la opción de línea de comando --clean para pg_dump para emitir comandos SQL para limpiar (soltar) objetos de base de datos antes de (los comandos para) crearlos. (Esto no eliminará toda la base de datos, solo cada tabla / secuencia / índice / etc. antes de volver a crearlos).

Los dos anteriores se verían así:

pg_dump -U username --clean | pg_restore -U username


Simplemente soltaría la base de datos y luego la volvería a crear. En un sistema UNIX o Linux, eso debería hacerlo:

$ dropdb development_db_name $ createdb developmnent_db_name

Así es como lo hago, en realidad.