PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come riparare lo script di backup automatico per postgres [Finestra]?

Il tuo codice dovrebbe racchiudere tutti i percorsi tra virgolette doppie per eliminare gli spazi bianchi. Tieni presente cmd interpreta ogni lavoro delimitato da spazi come un nuovo comando. Dobbiamo sfuggire a & poiché diventerà un operatore fisico in batch, infine si preferisce utilizzare il /d opzione quando si utilizza cd nel caso provenite da un'altra lettera di unità:

@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

Nota inoltre che non usi mai la password nel tuo pg_dump comando, quindi devi considerare anche quello. La migliore pratica è modificare

%APPDATA%\postgresql\pgpass.conf

e aggiungi

*:5432:*:username:password

per automatizzare quella parte nel tuo 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 la dir non esiste, crealo "%APPDATA%\postgresql"