我在Windows中有以下批处理文件,以便每天备份PostgreSQL.
我将添加此批处理文件以在Task Scheduler
中的特定时间每天运行.
pg_dumpall --exclude-database='template1' --host=127.0.0.1 --port=1234 --username=myuser --password=mypass > mydb_export_all.sql
然而,PostgreSQL包含多个数据库,当我在cmd中运行它时,它会不止一次地请求密码,因为有很多数据库.
有没有办法在参数中添加密码,并在需要时自动获取密码?
UPDATE:个 我try 了以下几种方法
@echo off
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%
set BACKUP_FILE=pg_dump_%datestr%.sql
echo backup file name is %BACKUP_FILE%
SET/P hostname=Host: SET/P port=Port: SET/P database=Database: SET/P username=Username: SET/P password=Password: > C:\mypath\pgpass.conf
pg_dumpall --exclude-database='template1' --username=myuser > %BACKUP_FILE%
而这pgpass.conf
张钞票包含以下内容:
127.0.0.1:1234:myuser:mypass
它是有效的,然而,pgpass.conf
文件的内容被更新为
Host: SET/P port=Port: SET/P database=Database: SET/P username=Username: SET/P password=Password:
有没有办法让pgpass.conf
个文件的内容保持不变?因为现在,我不能将它添加到任务调度程序中,因为它第二次不会运行.