按计划将MySQL表数据移动到新表中

时间:2017-12-19 03:00:39

标签: mysql sql

我已经分配了一项任务,可以通过定期将数据从一个表移动到MySQL服务器上的另一个表来解决,而且我有点不知所措,因为我还在新的,甚至不知道我应该研究的术语。我想将超过30天的数据迁移到新表中。

所以基本上,我希望在某个指定的时间每天运行一个类似下面的查询。

INSERT INTO tableB (columnA, columnB, columnC)
SELECT (columnA, columnB, columnC)
FROM tableA
WHERE created_on < DATE_ADD(curdate(), INTERVAL -30 day);

DELETE FROM tableA
WHERE created_on < DATE_ADD(curdate(), INTERVAL -30 day);

COMMIT;

所以我的问题是,我该如何设置呢?

2 个答案:

答案 0 :(得分:0)

我更喜欢在这里创建SQL作业并编写你的逻辑。

此致

阿都

答案 1 :(得分:0)

该解决方案是作为评论发布的,但无论如何我必须做的是使用事件调度程序,如下所示:

DELIMITER |

CREATE EVENT archive_old_messages
    ON SCHEDULE EVERY 1 DAY STARTS curdate() 
    DO BEGIN
        INSERT INTO tableB (columnA, columnB, columnC)
    SELECT (columnA, columnB, columnC)
    FROM tableA
    WHERE created_on < DATE_ADD(curdate(), INTERVAL -30 day);

    DELETE FROM tableA
    WHERE created_on < DATE_ADD(curdate(), INTERVAL -30 day);
        END |

DELIMITER ;