PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie behebt man das automatisierte Backup-Skript für postgres [Window]?

Ihr Code sollte alle Pfade in doppelte Anführungszeichen setzen, um Leerzeichen zu eliminieren. Denken Sie an cmd interpretiert jede durch Leerzeichen getrennte Arbeit als neuen Befehl. Wir müssen & maskieren Da es im Stapel zu einem physischen Operator wird, wird schließlich die Verwendung von /d bevorzugt Option bei Verwendung von cd falls Sie von einem anderen Laufwerksbuchstaben kommen:

@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

Beachten Sie auch, dass Sie niemals das Passwort in Ihrem pg_dump verwenden Befehl, also müssen Sie das auch berücksichtigen. Best Practice ist das Bearbeiten

%APPDATA%\postgresql\pgpass.conf

und hinzufügen

*:5432:*:username:password

um diesen Teil in Ihrem Skript zu automatisieren:

@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

Wenn das dir nicht existiert, erstellen Sie es "%APPDATA%\postgresql"