如何在每天00:00:00点的时候自动删除数据库某一张表的记录

如何在每天00:00:00点的时候自动删除数据库某一张表的记录,第1张

先新建存储过程:存储过程内容是你要删除的那张表。

然后建立一个JOB,设置JOB的内容:JOB执行的存储过程,job执行的时间。

这个是Oracle的,其他数据库大同小异

首先利用数据库自带的命令行工具将数据库备份下来,例如对MySQL将databasename数据库备份到D:\datasql(具体查阅数据库说明书)

mysqldump databasename > "D:\datasql"

然后将该文件以日期参量重名名。如果指定保留N天的数据可能有一定困难,不过既然要求7天,不妨以星期作为区分。

假设文件名具有格式“data_日期sql”,则更名语句为(建议先创建后改名,对于很大的数据库可能要备份很长时间并超过0点)

ren "datasql" "data_%date%sql"

若系统时间格式为“2009-04-05 星期日”,则产生文件“data_2009-04-05 星期日txt”。

获取星期几的语句:%date:~11,3%

其中11表示从第11个字符开始(从0开始计算),总共截取3个字符。由此可获得字符串“星期日”。重名名前,删除以data_开头,包含“星期日”的文件

del "data_%date:~11,3%sql"

这样就把上星期的那个文件删除了。

注意:如果系统日期格式与上面的不一致,数字需重新计算,特别是若日期中含有“/”、“:”等字符会导致创建文件失败,此时年月日星期均需手动提取,例如对“04/05/2009 Sun”,应使用“%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%%DATE:~11,3%”得到“20090405Sun”。查看日期格式可使用“echo %date%”。

另外,如果某项(时间格式、文件名、路径等)包含空格则必须使用引号。

脚本源代码

mysqldump databasename > "D:\datasql"

del "D:\data_%date:~11,3%sql"

ren "D:\datasql" "data_%date%sql"

编为一个bat文件,添加计划任务,每天定时执行即可。

两种方式。

第一种就是Timer,在程序端每隔一段时间去删除一次数据。

另一种就是用数据库作业,比如sql server的作业,可以设定每隔多久执行一段存储过程。可以在存储过程中删除数据。

USE master

go

DECLARE @s NVARCHAR(4000)

SET @s=''

SELECT @s=@s+' '+'DROP DATABASE '+QUOTENAME(name) FROM mastersysdatabases WHERE dbID>4

EXEC( @s)

go

作业的 *** 作

企业管理器

--管理

--SQL Server代理

--右键作业

--新建作业

--"常规"项中输入作业名称

--"步骤"项

--新建

--"步骤名"中输入步骤名

--"类型"中选择"Transact-SQL 脚本(TSQL)"

--"数据库"选择执行命令的数据库

--"命令"中输入要执行的语句:

上面提供的脚本

--确定

--"调度"项

--新建调度

--"名称"中输入调度名称

--"调度类型"中选择你的作业执行安排

--如果选择"反复出现"

--点"更改"来设置你的时间安排

然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:

我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定

以上就是关于如何在每天00:00:00点的时候自动删除数据库某一张表的记录全部的内容,包括:如何在每天00:00:00点的时候自动删除数据库某一张表的记录、数据库定时备份及删除、java根据它数据库里的时间字段定时隔一天删除数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10170520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存