PostgreSQL 自动备份,并删除10天前的备份文件的windows脚本.
第一步,创建脚本,命名back.bat文件,可直接点击执行或者CMD执行此批处理命令。
@ECHO OFF @setlocal enableextensions @cd /d "%~dp0" set PGPASSWORD=password SET PGPATH=D:\postgresql\binSET SVPATH=d:\zoobackupSET PRJDB=gzzoo SET DBUSR=postgres FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN (‘DATE /T‘) DO SET d=%%i-%%j-%%k SET DBDUMP=%PRJDB%_%d%.bak @ECHO OFF %PGPATH%pg_dump -h localhost -U postgres %PRJDB% > %SVPATH%%DBDUMP% echo Backup Taken Complete %SVPATH%%DBDUMP% forfiles /p %SVPATH% /d -5 /c "cmd /c echo deleting @file ... && del /f @path"
其中:PGPASSWORD密码,PGPATH 数据库路径,SVPATH备份文件存放位置,PRJDB数据库名称,DBUSR用户名
第二步设置定时任务 参考
https://blog.csdn.net/rosejeck/article/details/89026006
Linux 下使用crontab 定时任务。也可配置 pg_cron、pgAgent等定时任务插件。
第三步 恢复
cmd 然后进入postgresql的bin目录
执行
psql -h localhost -U username -d database < d:/data.bak
PG_DUMP和PG_RESTORE
PostgreSql的备份和还原分别是通过pg_dump和pg_restore执行的。PostgreSql的备份有三种形式,分别是自定义、tar格式、无格式三种类型。自定义和tar格式在备份时形成的是.backup文件,而无格式在备份时形成的是文本文件。在还原时,格式只能是自定义或tar格式,也就是说pg_dump使用无格式方式备份的文件,是不能用gp_restore还原的;pg_restore只能还原backup文件。
那么文本文件又是怎么还原呢?只能通过命令来执行。cmd进入执行框,用cd命令将路径改到数据库安装路径的bin文件夹下,输入以下命令:
psql -h localhost -U username -d mydb < mydb.bak
其中username是数据库的用户名,mydb是要还原的数据库名称,mydb.bak是自己备份的文本文件,在执行命令时要加入路径,比如:
psql -h localhost -U postgres-d postgis < c:\User\Desktop\postgis
数据的导出:
$ pg_dump -U postgres(用户名) (-t 表名) 数据库名(缺省时同用户名) > 路径/文件名.sql
postgres@debian:~$ pg_dump -U postgres -t system_calls wangye > ./test.sql postgres@debian:~$ ls 9.1 test.sql
数据的导入:
导入数据时首先创建数据库再用psql导入:
$ createdb newdatabase $ psql -d newdatabase -U postgres -f mydatabase.sql // sql 文件在当前路径下 $ psql -d databaename(数据库名) -U username(用户名) -f < 路径/文件名.sql // sql 文件不在当前路径下
参考:https://www.cnblogs.com/longsanshi/p/9490823.html
原文地址:https://www.cnblogs.com/VicLiu/p/11963320.html