在 windows 中使用 .bat 备份 Postgresql

Backup Postgresql with .bat in windows

我想在 Windows

上使用 .bat 文件创建一个 postgresql 数据库备份

我试过这个代码:

@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=odoo_%datestr%.backup
echo backup file name is %BACKUP_FILE%
SET PGPASSWORD=openpgpwd
echo on
bin\pg_dump -i -h localhost -p 5432 -U openpg -F c -b -v -f %BACKUP_FILE% formation

但是我什么也没收到。

并使用此代码:

@echo off
SET PG_BIN="C:\Program Files\OpenERP 7.0-20150818\PostgreSQL\bin\pg_dump.exe"
SET PG_HOST=localhost
SET PG_PORT=5432
SET PG_DATABASE=formation
SET PG_USER=openpg
SET PG_PASSWORD=openpgpwd
SET PG_PATCH=D:\odoo
SET FECHAYHORA=%date:/=%-%time:-0,8%
SET FECHAYHORA=%FECHAYHORA::=-%
SET FECHAYHORA=%FECHAYHORA: =0%
SET PG_FILENAME=%PG_PATH%\%PG_DATABASE%-%FECHAYHORA%.sql
%PG_BIN% - i -h %PG_HOST% -p %PG_PORT% -U %PG_USER% %PG_DATABASE% > %PG_FILENAME%

我也遇到了同样的问题

我想稍后在 Windows 任务计划程序中使用它。

您的脚本无法运行不足为奇,因为它们到处都是拼写错误。我并不声称我找到了所有这些,但这是我确实发现的列表:

第一个脚本:

  • pg_dump没有选项-i

第二个脚本:

  • -i中有一个伪造的space,但由于该选项不存在且会导致错误,因此应将其删除。

  • 您设置 PG_PATCH 并引用 PG_PATH

  • libpq 无法识别环境变量 PG_PASSWORD。删除下划线。

如果您阅读毫无疑问收到的错误消息,您就可以弄清楚这一切。您还应该始终在这样的问题中包含此类错误消息。

本回答由作者提供:

I think this is the solution for all:

@echo Backup database  %PG_PATH%%PG_FILENAME%
@echo off
SET PG_BIN="C:\Program Files\PostgreSQL\bin\pg_dump.exe"
SET PG_HOST=localhost
SET PG_PORT=5432
SET PG_DATABASE=motor_8
SET PG_USER=openpg
SET PG_PASSWORD=openpgpwd
SET PG_PATH=C:\OEM
SET FECHAYHORA=%date:/=%-%time:-0,8%
SET FECHAYHORA=%FECHAYHORA::=-%
SET FECHAYHORA=%FECHAYHORA: =0%
SET PG_FILENAME=%PG_PATH%\%PG_DATABASE%_%d%_%t%.sql

%PG_BIN% -h %PG_HOST% -p %PG_PORT% -U %PG_USER% %PG_DATABASE% > %PG_FILENAME%

@echo Backup Taken Complete %PG_PATH%%PG_FILENAME%