PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como corrigir o script de backup automatizado para postgres [Window]?


Seu código deve envolver todos os caminhos entre aspas duplas para eliminar espaços em branco. Lembre-se de cmd interpreta cada trabalho delimitado por espaço como um novo comando. Precisamos escapar do & como se tornará um operador físico em lote, por último é preferível usar o /d opção ao usar cd caso você venha de outra letra de unidade:
@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

Observe também que você nunca usa a senha em seu pg_dump comando, então você precisa considerar isso também. A melhor prática é editar
%APPDATA%\postgresql\pgpass.conf

e adicione
*:5432:*:username:password

para automatizar essa parte em seu 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

Se o dir não existe, crie-o "%APPDATA%\postgresql"