可以在shell脚本中,指定需要批量删除的数据库,将它们设置为变量,然后写清空表的语句,就可以实现定义在变量中的数据库批量删除。
你可以先写一个脚本进行测试,可以读取到一个数据库就行,然后将多个数据库放到数组中,循环遍历即可。
最后测试没问题的话,就可以将shell脚本添加到crontab定时任务中,就可以实现每2天定时清空数据表。
如果是就一次的话就是waitfor
delay
'02:00'
exec
sp_MSForEachTable
就是两分钟后执行存储过程sp_MSForEachTable,这个存储过程是微软为公开的,不过貌似不是很好用。
如果是在特定时间,比如晚上
10:20
BEGIN
WAITFOR
TIME
'22:20'
EXECUTE
sp_MSForEachTable
END
你可以自建一个存储过程,sp_DeleteAllData
CREATE
PROCEDURE
sp_DeleteAllData
AS
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
NOCHECK
CONSTRAINT
ALL'
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
DISABLE
TRIGGER
ALL'
EXEC
sp_MSForEachTable
'DELETE
FROM
?'
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
CHECK
CONSTRAINT
ALL'
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
ENABLE
TRIGGER
ALL'
EXEC
sp_MSFOREACHTABLE
'SELECT
*
FROM
?'
GO
清空单表可以truncate清空某个库下的所有表时,可以考虑导出这张表,以导出表结构的方式,把该库下所有的表结构导出来,再删库,导回去就好了
mysqldump
-d
参数是只导结构,不导数据的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)