使用Postgresql自带的pgAgent,能够很方便地建立定时执行任务。如今网上的资料都比较旧,Postgresql版本更新得比较快,致使网上的一些教程都不合用了,如今我写分享一下本身的经验。 sql
Postgresql的版本是 9.X 数据库
1.安装pgAgent。pgAgent在之前旧的版本是pgAdmin自带的,但新版本的pgAgent是须要经过Postgresql自带的Application Stack Builder这个软件来安装的。具体流程以下: windows
*在这里要填写Postgresql的postgres的用户名密码,或者具备操做postgres这个数据库权限的用户帐号。由于pgAgent须要在postgres这个数据库里面建立相应的表,因此这里填写的用户必须须要有操做postgres这个数据库的权限,在这里就用最大权限的postgres用户。 post
*在这里是埴写执行pgAgent的windows用户帐号,若是是域用户,请填写完整的域用户名和密码。由于pgAgent会在windows的服务里面添加一个叫“PostgreSQL Scheduling Agent - pgAgent”的服务,而这个服务须要登陆后才能运行,因此这里填写的帐号必须是当前widnows能够登陆的帐号。 ui
来到这里,就表示pgAgent已经成功安装了。能够到windows的服务里面看一下pgAgent的服务添加没有,是否在运行: 教程
2.建立Job. 当成功安装pgAgent,而且pgAgent已经在正常运行后,接下来的任务就是建立定时执行任务。Postgresql的定时任务的概念分为两个部分:Schedule和Step。 Schedule是定时器,配置这个Job何时执行。而Step是执行任务的内容。经过这两部分结合,就能够配置这个Job何时作什么。一个Job能够有多个Schedule和多个Step,他们是叠加的做用。 事务
具体操做以下: io
新建一个Job,命名为Job1,设置Job Class为Routine Maintenance,而且勾选前面的Enabled。 登录
为job1添加Schedule,命名为schedule1,勾选Enabled,而后设置开始和结束时间。若是结束时间不填,就表示这个Job会无止境地运行下去。而后在Times这个Tab的Minutes部分,勾选 00 和 30 ,这里表示这个job1会在每一个小时的整点(00),和半点(30)执行。也就是每隔30分钟执行一次。若是只勾选 30, 就表示每一个小时的30分钟执行,例如 4:30,5:30,这就是每隔一个小时执行一次了。其它的Hours,Week Days,Month Days,Months的概念是相同的。 软件
另外Exceptions Tab是例外的状况,就是当这种状况的时候就不会执行这个Job。
而后就是为job1添加执行的内容。如今添加一个Step,命名为step1。勾选Enabled。而后选择须要执行这个job的数据库。另外还须要注意Kind部分和On Error部分。Kind部分是指明执行这个job是SQL仍是batch类型。job除了能够运行SQL,还能够运行windows的batch命令。在这个例子中咱们选用SQL。在On Error部分,表示当执行这个job出现错误的时候,是中止(Fail),是正常(Succeed),仍是忽略(Ignore)。如今这个例子选用Fail,就表示当执行的内容一出错,就中止运行,退出。
如今就是定义job1须要执行的SQL,通常建议把这些SQL写在一个事务中,这样就算job1运行失败,都不会影响到数据。
到这一步,job1就基本建立完成了。
如今要监视job1的运行状态,能够经过pgAdmin,在job1的Properties Tab,能够看到job1下次运行的时间,上次运行的时间,结果,当前是否在运行。还能够经过 Statistics Tab,查看job1运行的次数。
好了,到这里,如何用pgAgent建立定时任务的介绍就完了。之后再有更深刻的探讨,再给你们介绍。
谢谢