Search code examples
postgresqlbatch-filebackup

Backup Postgresql with .bat in windows


I want to create a postgresql database backup with a .bat file on Windows

I tried with this code:

@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

But I received nothing.

And with this code:

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

I have the same problem.

I want to use it later in the Windows Task Scheduler.


Solution

  • This answer was provided by the author:

    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%