我在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个文件的内容保持不变?因为现在,我不能将它添加到任务调度程序中,因为它第二次不会运行.

推荐答案

我找到了解决方案.感谢Laurenz Albe对您的 comments .

批处理脚本包含以下脚本:

@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%


REM Set the PGPASSFILE environment variable
SET "PGPASSFILE=C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\postgresql\pgpass.conf"

REM Execute pg_dumpall with the environment variable for password
pg_dumpall --exclude-database='template1' --host 127.0.0.1 --port 1234 --username=myuser > P:\Rina\%BACKUP_FILE%

pgpass.conf文件包含以下内容:

127.0.0.1:1234:*:myuser:mypass

Postgresql相关问答推荐

跟踪状态更改为特定值的日期

Postgs密码重置问题

Postgr不列出运算符和函数

PostgreSQL:如何 for each 唯一的客户输入/更新列中的数据,并将其递增1直到表的末尾

如何在PostgreSQL中以行值的形式获取列

在特定值的组聚合中添加标签列作为结果

将整数(以毫秒为单位的epoch时间)转换为PrimitiveDateTime

Postgres:一次插入多行时自定义upsert(存储过程?)?

postgresql中多个左连接的空结果

如何 Select 任意行的相邻行(在 sql 或 postgresql 中)?

Postgres/psycopg2 - 插入字符串数组

mysql_insert_id 替代 postgresql

没有查询要创建的in ... error

我怎样才能知道 Postgresql 表空间中有什么?

Postgresql - 更新规则 - 可能有一个最后修改日期,自动更新该行的on update?

按任意时间间隔计算行数的最佳方法

在 Postgres 中显示关系、序列和函数的默认访问权限

Array Push的 Postgres 数组追加和数组长度

Postgres DB 上的整数超出范围

性能调优:为布尔列创建索引