PostgreSQL自动备份的批处理文件

时间:2022-06-30 15:15:29

貌似没有SQLServer那样比较强大的自动备份功能,只能够做成批处理文件,然后加到windows的计划任务中。

@ECHO OFF
echo 正在初始化环境变量. . .
echo.
:: 对于路径中有空格的路径字符串,需要加上英文双引号包裹!否则就会出现命令错误!
set POSTGRESQL_DIR="D:\PostgreSQL\9.2\bin\"
:: 数据库管理系统名
set DBMS_NAME=PostgreSQL
set DBBAK_DIR="F:\"
set DB_NAME=Test
set USER="postgres"
:: PostgreSQL的pg_dump命令行工具没有带密码的参数,但是可以设置一个PGPASSWORD的环境变量来提供密码
set PGPASSWORD=123456
echo 正在备份数据库. . .
echo.
:: 以下是获得当前系统时间的命令,e.g. 20120503101305
:: 年
set myyy=%date:~0,4%
:: 月
set mymm=%date:~5,2%
:: 日
set mydd=%date:~8,2%
::echo %myyy% %mymm% %mydd%
set /a TODAY=%date:~0,4%%date:~5,2%%date:~8,2%
set _TIME=%time:~0,8%
::echo %_TIME%
set CURRENTTIME=%_time::=%
set CURRENTTIME=%CURRENTTIME: =0%
set MYDATETIME=%TODAY%%CURRENTTIME%
::echo %MYDATETIME%
D:
cd %POSTGRESQL_DIR%
:: 使用PostgreSQL提供的pg_dump命令将具体数据库导出为.sql文件
pg_dump -h localhost -p 5432 -U %USER% %DB_NAME% >%DBBAK_DIR%\%DB_NAME%_%MYDATETIME%_%DBMS_NAME%.sql
echo 备份结束
echo.
exit