sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo arreglar la secuencia de comandos de copia de seguridad automatizada para postgres [Ventana]?

Su código debe envolver todas las rutas entre comillas dobles para eliminar los espacios en blanco. Tenga en cuenta cmd interpreta cada espacio de trabajo delimitado como un nuevo comando. Necesitamos escapar del & como se convertirá en un operador físico en lote, por último se prefiere usar el /d opción al usar cd en caso de que provenga de otra letra de unidad:

@echo off    
 SET "PGPASSWORD=%Ech0-5910^&123"
 set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
 cd /d "%root%"
 pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb

También tenga en cuenta que nunca usa la contraseña en su pg_dump comando, por lo que debe considerar eso también. La mejor práctica es editar

%APPDATA%\postgresql\pgpass.conf

y agrega

*:5432:*:username:password

para automatizar esa parte en tu script:

@echo off
  echo *:5432:*:postgres:%Ech0-5910^&123>""%APPDATA%\postgresql\pgpass.conf"
  set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
  cd /d "%root%"
  pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb

Si el dir no existe, créelo "%APPDATA%\postgresql"