2015-12-11 99 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命令 –

相關問題