在 PostgreSQL 中自动备份数据库
Automate Database backup in PostgreSQL
我正在寻找一个解决方案 - 一个脚本,用于在 PostgreSQL 中自动执行数据库备份过程。截至目前,我手动执行此操作,即右键单击数据库并单击备份选项。
我做了一些研究,最后得到了一个几乎可以解决问题的脚本,即:
@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=C:\PostgreSQL.4\bin\
SET SVPATH=d:\
SET PRJDB=Test
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
SET pg_dump=%PRJDB%_%d%_%t%.backup
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%pg_dump%
echo Backup Taken Complete %SVPATH%%pg_dump%
pause
确实进行了备份,但生成的文件是 sql 文件,尽管我确实将扩展名更改为 .backup
。因此,如果我需要恢复数据库,并尝试从生成的文件中恢复,那是不可能的。有人可以为我提供解决这个问题的方法吗?
提前致谢。
以下脚本可用于获取 .backup
扩展名
的 Postgres 备份
@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=%day%_%month%_%year%
echo datestr is %datestr%
set BACKUP_FILE=C:\Users\slan\Desktop\backup_test\DBNAME_%datestr%.backup
echo backup file name is %BACKUP_FILE%
SET PGPASSWORD=YOUR_PASSWORD
echo on
bin\pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f %BACKUP_FILE% YOUR_DB_NAME
你必须有 PostgreSQL 的 bin 文件夹(例如 C:\PostgreSQL.4\bin
)和这个脚本,否则它不会像你预期的那样工作
要安排任务,您可以使用 Windows 任务计划程序,这里是一个示例,说明如何 ?? - How to schedule a Batch File to run automatically in Windows 10 / 8 / 7
您可以使用 PGagent 来调度批处理,它比 windows 调度程序 bat 脚本有多个优势
我正在寻找一个解决方案 - 一个脚本,用于在 PostgreSQL 中自动执行数据库备份过程。截至目前,我手动执行此操作,即右键单击数据库并单击备份选项。 我做了一些研究,最后得到了一个几乎可以解决问题的脚本,即:
@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=C:\PostgreSQL.4\bin\
SET SVPATH=d:\
SET PRJDB=Test
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
SET pg_dump=%PRJDB%_%d%_%t%.backup
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%pg_dump%
echo Backup Taken Complete %SVPATH%%pg_dump%
pause
确实进行了备份,但生成的文件是 sql 文件,尽管我确实将扩展名更改为 .backup
。因此,如果我需要恢复数据库,并尝试从生成的文件中恢复,那是不可能的。有人可以为我提供解决这个问题的方法吗?
提前致谢。
以下脚本可用于获取 .backup
扩展名
@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=%day%_%month%_%year%
echo datestr is %datestr%
set BACKUP_FILE=C:\Users\slan\Desktop\backup_test\DBNAME_%datestr%.backup
echo backup file name is %BACKUP_FILE%
SET PGPASSWORD=YOUR_PASSWORD
echo on
bin\pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f %BACKUP_FILE% YOUR_DB_NAME
你必须有 PostgreSQL 的 bin 文件夹(例如 C:\PostgreSQL.4\bin
)和这个脚本,否则它不会像你预期的那样工作
要安排任务,您可以使用 Windows 任务计划程序,这里是一个示例,说明如何 ?? - How to schedule a Batch File to run automatically in Windows 10 / 8 / 7
您可以使用 PGagent 来调度批处理,它比 windows 调度程序 bat 脚本有多个优势