2015-12-11 97 views
0

我正在寻找一个解决方案 - 一个脚本来自动执行PostgreSQL中的数据库备份过程。到目前为止,我手动执行该操作,即右键单击数据库并单击备份选项。 我做了一些研究,并结束了一个脚本,它解决了问题相当多,即:在PostgreSQL中自动备份数据库

@ECHO OFF 
@setlocal enableextensions 
@cd /d "%~dp0" 

SET PGPATH=C:\PostgreSQL\9.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 。因此,如果我需要恢复数据库,并尝试从生成的文件中恢复,则不可能。有人可以为我提供解决这个问题的方法。 在此先感谢。

+0

在哪个操作系统?? –

+0

Windows7 - 64位 – Shruthi

+0

所以,你只是想自动化postgresql备份像调度备份或什么? –

回答

1

下面的脚本可以使用.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\9.4\bin),否则当你想到这是行不通的

要安排任务,您可以使用Windows任务计划程序,这里是一个示例如何? - How to schedule a Batch File to run automatically in Windows 10/8/7

+0

否..它不是数据库名称..它是批处理文件和bin存储的路径! – Shruthi

+0

你好,我试图执行这在pgAdmin查询,但它遇到错误:'错误:语法错误在或附近“@” 线1:@echo off' 什么是错误的脚本? – fLen

+1

@fLen它是一个批处理脚本('.bat')DOS命令,不是SQL/PLSQL命令 –

相关问题