首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有哪些方法可以将'Y‘天之前的数据移动到MySQL中的归档/历史记录表中?

有哪些方法可以将'Y‘天之前的数据移动到MySQL中的归档/历史记录表中?
EN

Stack Overflow用户
提问于 2009-04-30 17:08:57
回答 4查看 5.5K关注 0票数 1

对于存在Y天的数据,希望每X天将数据从表A移动到历史表B,然后从历史表B中删除存在时间超过Z天的数据。

只是在探索不同的方法来实现这一点。因此,任何建议都将不胜感激。

变量X-7天Y-60天z-365天的示例

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-30 17:14:49

代码语言:javascript
复制
CREATE PROCEDURE prc_clean_tables (Y INT, Z INT)
BEGIN
        BEGIN TRANSACTION;

        DECLARE _now DATETIME;
        SET _now := NOW();

        INSERT
        INTO    b
        SELECT  *
        FROM    a
        WHERE   timestamp < _now - INTERVAL Y DAY;
        FOR UPDATE;

        DELETE
        FROM    a
        WHERE   timestamp < _now - INTERVAL Y DAY;

        DELETE
        FROM    b
        WHERE   timestamp < _now - INTERVAL Z DAY;

        COMMIT;
END
票数 3
EN

Stack Overflow用户

发布于 2009-04-30 17:29:29

这看起来很简单。

您希望每晚执行一个cron作业来运行脚本。

代码语言:javascript
复制
#crontab -e 

50 11 * * * $HOME/scripts/MyWeeklyArchive.sh

脚本文件本身也非常简单。我们将只使用mysqldump和Now()函数;

代码语言:javascript
复制
#! /bin/bash

/usr/bin/mysqldump -uUser -pPassword Current_DB Table --where='date < NOW() - INTERVAL 7 DAY' | /usr/bin/mysql -uUser -pPassword archive_DB

您可以只将该行包含在cron文件中,但出于可伸缩性等考虑,我建议将其设置为脚本文件。

票数 1
EN

Stack Overflow用户

发布于 2009-04-30 19:03:50

如果你使用的是cron 5.1,你也许可以使用事件调度程序,而不是MySQL。我没有使用过它,但我在SQL Server中使用过类似的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/808039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档