Mysql - Linux:在特定日期和时间在表中插入记录

时间:2015-08-18 05:45:05

标签: mysql linux cron

我需要每年12月31日晚上11:59在MySql表中插入一条记录。

MySql数据库存储在Ubuntu系统中 我不知道它是否可以直接在MySql中完成,或者我是否需要在Ubuntu中创建一个shell脚本。

如果有人对此有所了解......

感谢。

4 个答案:

答案 0 :(得分:3)

您可以使用调度程序: https://dev.mysql.com/doc/refman/5.1/en/create-event.html

简单的调度程序事件:

DELIMITER $$
CREATE EVENT my_event
ON SCHEDULE EVERY '1' YEAR
STARTS '2015-12-31 23:59:00'
DO 
BEGIN
 -- insert your stuff
END$$

DELIMITER ;

我认为您必须通过将event_scheduler设置为ON来启用它。

答案 1 :(得分:1)

创建活动 - CREATE EVENT。 设置间隔 - 年,并设置数据和开始时间。

答案 2 :(得分:1)

  1. 如果您愿意,最好使用 MySQL 来使用触发器 在DB中的某些事件上插入数据。

  2. 您可以使用一些调度程序框架以编程方式执行此操作     比如 Quartz 会调用你的插入DAO方法。

  3. 最简单的就是拥有一个带 Cron的脚本     作业/脚本,直接连接到您的数据库和插入     指定时间间隔内的数据。

答案 3 :(得分:1)

如果我没弄错,从MySQL 5.1开始我们提供了事件安排。

因此,如果your_db可用,你可以这样做:

CREATE DATABASE IF NOT EXISTS your_db;

USE your_db;

CREATE TABLE `some_table` (
  `ev` varchar(100) NOT NULL,
  PRIMARY KEY (`ev`)
);

SET GLOBAL event_scheduler = ON;

CREATE EVENT your_event ON SCHEDULE EVERY 1 MINUTE STARTS '2014-08-20 00:10:00' ON COMPLETION PRESERVE ENABLE
DO
  INSERT INTO your_db.some_table (ev) VALUES (CONCAT_WS(' ', 'En Event Occurred at', NOW()));

安排每1分钟发生一次简单事件。

如果它有效(它在我的ubuntu 14.04盒子上),那么我猜你只是自定义这个片段。您可以将“MINUTE”更改为“YEAR”。

如果没有,请告诉我们。

供您参考:

https://dev.mysql.com/doc/refman/5.1/en/events.html

BTW:我宁愿不坚持使用crontab脚本......为了配置crontab,你需要不同的权限集来访问mysql。即便如此,在某些情况下它仍然是一个不错的选择。