Windows环境下pg_dump远程备份postgresql多个表数据脚本

pg_dump备份脚本

脚本功能:
pg_dump工具远程备份postgresql数据库多个表数据,并压缩备份文件,保留最新的7个备份文件,如果需要可以修改参数即可。

将以下脚本内容拷贝到expdp_db.bat 保存为bat格式的文件,同时创建一个tablelist.txt的文本把需要备份的表名字加入到文本里面,把bat加入到定时任务即可实现自动备份。

这里只是部署了一个导出的脚本,后续会更新一个自动导入的脚本,请留意,谢谢。
tablelist.txt文本内容

table1
table2
table3

expdp_db.bat 脚本内容:

@echo off

REM database infomation
set db=dbname
set host=10.x.x.x
set port=5436
set user=postgres
set output_base_dir="D:\DMP\CCMDB"
set pg_dump_dir="D:\Program Files\PostgreSQL\12\bin\"
REM set zip tool path
set ziptool="C:\Program Files\7-Zip\7z.exe"
REM KEEP DAYS
set keep_days=7*

REM set date time
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
set timevar=%time:~0,2%
set timevar=%timevar%%time:~3,2%%time:~6,2%

REM set backup file path
set backup_file_dir=%output_base_dir%\%db%_%datevar%
if not exist "%backup_file_dir%" (
    mkdir "%backup_file_dir%"
    echo  %backup_file_dir% Create Successfully!
) else (
    echo  %backup_file_dir% is already exist!
)

REM set backup logfile path
set logfile_path="%output_base_dir%\logs"
set logfile="%output_base_dir%\logs\backuplog_%datevar%%timevar%.log"
if not exist "%logfile_path%" (
    mkdir "%logfile_path%"
    echo  %logfile_path% Create Successfully!
) else (
    echo  %logfile_path% is already exist!
)
call :LOG > %logfile%
exit /B

:LOG
echo ------------------------------------------------------------------------------------------------
echo ---------------- Record the start time ------------------------------------------------------
echo ------------------------------------------------------------------------------------------------
set /a startS=%time:~6,2%
set /a startM=%time:~3,2%
echo Start_Time %time%
echo -------------------------------------------------------------------------------------------------
echo ---------------- begin backup table ---------------------------------------------------------
echo -------------------------------------------------------------------------------------------------
echo.
echo.
REM backup all tables in table_list
set tabname=''
setlocal enabledelayedexpansion
d:
cd %output_base_dir%
echo Current floder %cd%
for /f %%a in (.\tablelist.txt) do (
	echo ---------------------------------------------------------------
    set tabname=%%a
	echo Start export !tabname!
	%pg_dump_dir%\pg_dump -d %db% -h %host% -p %port% -U %user% -w -f %backup_file_dir%\!tabname!.dmp -Fc -t !tabname!
	echo ---------------------------------------------------------------
	echo.
)
echo.
echo -------------------------------------------------------------------------------------------------
echo ---------------- end backup table ---------------------------------------------------------
echo -------------------------------------------------------------------------------------------------
echo.
echo.
echo ------------------------------------------------------------------------------------------------
echo ---------------- Start compressing the backup folder ---------------------------------------
echo ------------------------------------------------------------------------------------------------
d:
cd %output_base_dir%
echo Current floder %cd%
%ziptool% a -tzip %backup_file_dir%.zip %backup_file_dir%
echo ---------------- delele backup folder -----------------------------------------------------------
echo.
echo.
echo %backup_file_dir%
rd /s /Q %backup_file_dir%
echo ------------------------------------------------------------------------------------------------
echo ---------------- End compressing the backup folder ------------------------------------------
echo ------------------------------------------------------------------------------------------------
echo.
echo.
echo -------------------------------------------------------------------------------------------------
echo ---------------- delete before 7 days backupfile  ---------------------------------------
echo -------------------------------------------------------------------------------------------------
d:
cd %output_base_dir%
echo Current floder %cd%
forfiles /p %output_base_dir% /s /m *.zip /d -%keep_days% /c "cmd /c del @path"
echo.
echo.
echo ------------------------------------------------------------------------------------------------
echo ---------------- Record backup time stake -------------------------------------------------
echo ------------------------------------------------------------------------------------------------
echo.
set /a endS=%time:~6,2%
set /a endM=%time:~3,2%
echo End_Time %time%
set /a diffS_=%endS%-%startS%
set /a diffM_=%endM%-%startM%
echo.
echo.
echo Cost_Time %diffM_% Min %diffS_% Second
echo.
echo.
echo -------------------END----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值