定时器每天凌晨1点读取数据库a的数据,然后插入数据库b,该怎么写?

时间:2021-10-19 00:53:28
定时器准备用ScheduledThreadPoolExecutor,要求每天凌晨1点读数据库a的某个表中的数据,然后插入数据库b的某个表。我现在就是不知道怎么判断每天凌晨一点这个条件,怎么写啊?

10 个解决方案

#1


不用ScheduledThreadPoolExecutor,数据库方面做也可以。 做个定是任务 数据库job

#2


ScheduledThreadPoolExecutor 是时间间隔的,可以用quartz实现凌晨一点。。。

#3


用Shell脚本来做不可以吗?

#4


定时任务用quartz呀,看下quartz时间表达式就知道怎么写了

#5


引用 2 楼 gagewang1 的回复:
ScheduledThreadPoolExecutor 是时间间隔的,可以用quartz实现凌晨一点。。。
我用线程,就是一直调用,在线程体里面判断是不是凌晨一点,是的话就执行读操作。返回成功或失败,如果失败的话,半个小时后再执行,就是只要是读取失败,就每隔半小时再读一次,第四次读的时候还是失败的话,就不读了,写一条读取失败的记录到数据库。ScheduledThreadPoolExecutor应该行吧?

#6


除非你有很特别的需求,不然还是比较建议直接使用数据库中定时任务来完成此类工作,省时省力还好维护。

#7


引用 6 楼 yueming158 的回复:
除非你有很特别的需求,不然还是比较建议直接使用数据库中定时任务来完成此类工作,省时省力还好维护。
数据库用的是mysql,因为公司框架比较复杂,用了淘宝的分布式框架dubbo。问一句,mysql的定时任务指的是?

#8


引用 5 楼 many_problems 的回复:
Quote: 引用 2 楼 gagewang1 的回复:

ScheduledThreadPoolExecutor 是时间间隔的,可以用quartz实现凌晨一点。。。
我用线程,就是一直调用,在线程体里面判断是不是凌晨一点,是的话就执行读操作。返回成功或失败,如果失败的话,半个小时后再执行,就是只要是读取失败,就每隔半小时再读一次,第四次读的时候还是失败的话,就不读了,写一条读取失败的记录到数据库。ScheduledThreadPoolExecutor应该行吧?
 可以把ScheduledThreadPoolExecutor的时间间隔设小一些比如10分钟,判断是否>=凌晨一点,今天是否已经执行(这2个判断也挺麻烦的),满足条件则执行你要的操作。建议使用quartz,确实挺好用的。

#9


我觉得也是,直接用数据库定时器,和存储过程来搞定,简单快速

#10


如果只涉及定时读数据插表  可以用 存储过程  用事件定时跑

用quartz 也可以     0 0 1 ? * *   每天凌晨1点跑

ScheduledThreadPoolExecutor 一般用于 相同间隔时间 重复跑数据

#1


不用ScheduledThreadPoolExecutor,数据库方面做也可以。 做个定是任务 数据库job

#2


ScheduledThreadPoolExecutor 是时间间隔的,可以用quartz实现凌晨一点。。。

#3


用Shell脚本来做不可以吗?

#4


定时任务用quartz呀,看下quartz时间表达式就知道怎么写了

#5


引用 2 楼 gagewang1 的回复:
ScheduledThreadPoolExecutor 是时间间隔的,可以用quartz实现凌晨一点。。。
我用线程,就是一直调用,在线程体里面判断是不是凌晨一点,是的话就执行读操作。返回成功或失败,如果失败的话,半个小时后再执行,就是只要是读取失败,就每隔半小时再读一次,第四次读的时候还是失败的话,就不读了,写一条读取失败的记录到数据库。ScheduledThreadPoolExecutor应该行吧?

#6


除非你有很特别的需求,不然还是比较建议直接使用数据库中定时任务来完成此类工作,省时省力还好维护。

#7


引用 6 楼 yueming158 的回复:
除非你有很特别的需求,不然还是比较建议直接使用数据库中定时任务来完成此类工作,省时省力还好维护。
数据库用的是mysql,因为公司框架比较复杂,用了淘宝的分布式框架dubbo。问一句,mysql的定时任务指的是?

#8


引用 5 楼 many_problems 的回复:
Quote: 引用 2 楼 gagewang1 的回复:

ScheduledThreadPoolExecutor 是时间间隔的,可以用quartz实现凌晨一点。。。
我用线程,就是一直调用,在线程体里面判断是不是凌晨一点,是的话就执行读操作。返回成功或失败,如果失败的话,半个小时后再执行,就是只要是读取失败,就每隔半小时再读一次,第四次读的时候还是失败的话,就不读了,写一条读取失败的记录到数据库。ScheduledThreadPoolExecutor应该行吧?
 可以把ScheduledThreadPoolExecutor的时间间隔设小一些比如10分钟,判断是否>=凌晨一点,今天是否已经执行(这2个判断也挺麻烦的),满足条件则执行你要的操作。建议使用quartz,确实挺好用的。

#9


我觉得也是,直接用数据库定时器,和存储过程来搞定,简单快速

#10


如果只涉及定时读数据插表  可以用 存储过程  用事件定时跑

用quartz 也可以     0 0 1 ? * *   每天凌晨1点跑

ScheduledThreadPoolExecutor 一般用于 相同间隔时间 重复跑数据