Estoy tomando el volcado de la base de datos de postgres usando "pg_dump database_name> backup.sql". Más tarde estoy haciendo algunas modificaciones en la base de datos original (database_name) y luego estoy restaurando los datos del archivo de copia de seguridad (backup.sql). Pero el resultado es que la base de datos no se restaura al estado original, sino que agrega los datos originales a los datos modificados (modificados + originales). Solo quiero que se restaure al estado original, ¿debería eliminar todos los datos? datos de la base de datos antes de restaurarlos desde el archivo de copia de seguridad, ya que proporciona el estado original de la base de datos. ¿O hay alguna otra manera de hacer esto?
El formato predeterminado para pg_dump es simple, por lo que crea una instrucción COPY . Por lo tanto, cuando psql backup.sql simplemente ejecuta esa copy sobre los datos existentes. Para reescribir datos, primero debe eliminar las tablas o pg_dump -F c y pg_restore -c .
Advertencia: en ambos casos, destruirá los datos antiguos (aunque esto parece ser lo que quieres)
-c --clean Limpia (elimina) los objetos de la base de datos antes de volver a crearlos. (A menos que se use --if-exists, esto podría generar algunos mensajes de error inofensivos, si algún objeto no estuviera presente en la base de datos de destino).
Como sugiere @Craig Ringer, soltar/recrear desde la copia de seguridad sería mucho más fácil y limpio. Para eliminar la base de datos, ejecute DROP DATABASE au ; tenga en cuenta que no debe haber usuarios conectados al éxito. Luego debe crear db: CREATE DATABASE au y ejecutar psql -f backup.sql -d au
Realice el volcado con la opción -c : pg_dump -c database_name > backup.sql . Consulte los documentos de pg_dump .