0%

数据库自动备份、删除数据

文中指令可在windows命令行中执行测试
本文介绍的是实用简单的方式实现所需功能,所有功能均可写在上位机软件中自动实现,但不同现场很难通用
通过脚本的形式实现简单易改

Postgresql

数据库备份脚本

1
2
3
4
5
echo off
set PRJDB=LocalDB
set FileName=%PRJDB%_%date:~0,4%_%date:~5,2%_%date:~8,2%.backup
if not exist "D:\BBK\DBbackup" (md D:\BBK\DBbackup)
D:/"Program Files (x86)"/PostgreSQL/9.5/bin/pg_dump.exe --host localhost --port 5432 --username "postgres" --no-password --format custom --verbose --file "D:\BBK\DBbackup\%FileName%" "LocalDB"

说明:

备份保存路径为D:\BBK\DBbackup
命名为:LocalDB_年_月_日.backup
D:/"Program Files (x86)"/PostgreSQL/9.5/bin/pg_dump.exe为Postgresql数据库程序所在路径

删除表中数据

1
2
// 删除一个月以前的数据
D:/"Program Files (x86)"/PostgreSQL/9.5/bin/psql -h 127.0.0.1 -p 5432 -d LocalDB -U postgres --command "delete from 侧滑表 where 测试时间 < (now() - interval '1 month')"

说明:

D:/"Program Files (x86)"/PostgreSQL/9.5/bin为Postgresql数据库程序所在文件夹

时间扩展

interval '2 years'
interval '2 year'
interval '2 y'
interval '2 Y'
interval '2Y'

interval '1 month'
interval 'one month'

interval '3 week'

说明:interval 可以不写

运行时会提示数据用户名密码
windows系统可在%APPDATA%\postgresql\pgpass.conf中添加服务器信息,实现免密操作
格式:地址:端口:数据库:用户名:密码
如:127.0.0.1:5432:LocalDB:postgres:123
参考:https://www.postgresql.org/docs/current/libpq-pgpass.html

自动运行

将上述shell指令分别复制到文本文档中另存为 name.bat,然后创建任务计划自动调用;
任务计划创建方法:windows运行compmgmt.msc 新建任务计划程序按提示操作即可

SQLServer

数据库自动备份

打开数据库,依次进入:管理——维护计划,根据维护计划向导操作即可

删除数据

启动SQL Server Agent服务,在步骤中新建作业,类型选择transact-SQL,
命令中输入:
declare @tm datetime
delete from tablename where tm>=dateadd(month,-6,getdate())//删除表中6个月之前的数据
然后打开计划自定义执行周期

Access

直接用脚本复制重命名,新建任务计划自动执行

1
2
3
set PRJDB=LocalDB
set FileName=%PRJDB%_%date:~0,4%_%date:~5,2%_%date:~8,2%.backup
copy D:\BBK\LocalDB.mdb D:\BBK\DBbackup\%FileName%"