如何实现一个定时任务来对数据库中的数据进行 *** 作

如何实现一个定时任务来对数据库中的数据进行 *** 作,第1张

由于公司的新接得项目要实现一批数据的同步,通过外围厂商提供的一系列各个系统的webervices接口定时将数据同步到我们开发的共享平台上,由于厂商系统的数据是不断在变化以及各系统闲忙时的特点,所以定时同步任务的执行必须在时间上能够动态配置。因此,我们需要动态的从数据库中获取配置信息,以改变各个定时间的执行规则,废话不说了,上代码:(我利用的是ssh框架直接写的,框架搭建不再叙述)

1.创建数据表(我用的是MySQL)

[sql] view plain copy

DROP TABLE IF EXISTS `t_wsdoc`

CREATE TABLE `t_wsdoc` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`triggername` varchar(50) NOT NULL,

`jobdetailname` varchar(50) N

选择“开始-》程序-》附件-》系统工具-》任务计划”

点击“添加任务计划”,开始计划任务向导,并点击“下一步”

选择“浏览”选择脚本文件或者某个exe程序

选择“每天”运行该脚本,按“下一步”;(根据实际需求设置)

此处设置定时脚本执行的时间为每天凌晨五点,按“下一步”;

设置系统管理员的用户名和密码,按“下一步”

点击“完成”结束定时任务的设置。

1. Windows 定时计划任务 (参考 )

* 命令说明

- /sc 指定计划类型,取值为minute、hourly、daily、weekly、monthly、once、onstart、onlogon、onidle

- /mo 指定任务在其计划类型内的运行频率

- /tn 指定任务的名字

- /tr 指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名

* 创建任务

- 开机运行任务schtasks /create /sc onstart /tn "taskName" /tr c:\test.bat

- 每十分钟执行一次schtasks /create /sc minute /mo 10 /tn "RunPerTenMinuts" /tr c:\test.bat

* 终止任务

- schtasks /end /tn "taskName"

* 删除任务

- schtasks /delete /tn "taskName"

* 查看当前系统定时任务列表

- schtasks

2. bat批处理文件

例子代码,test.bat文件:

set /a now=%date:~2,2%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%

for /f "tokens=1,3* delims=-, " %%i in (C:\test\20110720\test.txt) do set /a result=-%%i+%now%

echo %result%

if %result% GTR 2 (java -jar c:\teset\20110720\test.jar)else (echo agent is running)

* 代码说明

- C:\test\20110720\test.txt的内容为1107201155,即,2011-07-20 11:55:32去掉年份的前两位和秒数拼接而成

- set /a now=....是将=右边的字符串转换为数字

- %date,%time分别获取系统的日期和时间

- %date:~2,5%表示日期的前两位不要,从第三位开始取,取够5位。如对于2010-07-20,结果为10-07

- for循环delims=-, 表示以-或,或空格分隔%%i in (C:\test\20110720\test.txt)表示从文件读数据到变量i中 ,如果有多个数据,则依次分配各变量j,k,l,m...

- if语句

1、判断驱动器、文件或文件夹是否存在,用 if exist 语句;

2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;

3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;

4、判断某个变量是否已经被赋值,用 if defined str 语句;

if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。

对于以上四种情形,可以分别使用如下代码:

1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)

2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)

3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)

4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)

判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。

判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:

中文含义关系符英文解释

等于equequal

大于gtrgreater than

大于或等于geqgreater than or equal

小于lssless than

小于或等于leqless than or equal

不等于neqno equal

if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。

- 需要定时执行test.bat文件时,可用schtasks命令


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11892215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存