使用pgagent以编程方式创建作业和计划

时间:2010-12-18 08:27:04

标签: c++ c postgresql libpq

有没有办法以编程方式在pgagent中创建和管理作业/日程安排,即没有使用pgAdmin?

我怀疑通过使用libpq写一个postgres客户端可能有办法做到这一点(如果pgagent不支持开箱即用的这种行为) - 但我不知道如何去做 - 如果我需要请记下编写我的OWN API以获得作业/计划CRUD功能。

所以基本上我问了两个问题:

  • 有没有办法以编程方式在pagent中创建/管理作业和日程安排?
  • 如果不是,对于上述问题,我需要挂钩哪些部分的支付代码才能提供我自己的工作/时间表CRUD功能?

2 个答案:

答案 0 :(得分:3)

下面将创建一个每分钟运行一次的作业,其中一个步骤调用一些SQL:

do $$
declare
    job_id int;
begin

    /* add a job and get its id: */
    insert into 
        pgagent.pga_job (jobjclid, jobname) 
    values 
        (1 /*1=Routine Maintenance*/, 'my job name') 
    returning 
        jobid 
    into 
        job_id;


    /* add a step to the job: */
    insert into 
        pgagent.pga_jobstep (jstjobid, jstname, jstkind, jstcode, jstdbname) 
    values 
        (
            job_id, 
            'my step name', 
            's',                    /* sql step */
            'select * from thing',  /* the sql to run */
            'mydb'                  /* the name of the database to run the step against */
        );


    /* add a schedule to the job. This one runs every minute: */
    insert into 
        pgagent.pga_schedule (jscjobid, jscname) 
    values 
        (job_id, 'my schedule name');

end $$;

答案 1 :(得分:2)

pgAdmin只是创建了一些SQL语句,就是这样。任何可以连接到数据库“postgres”并具有使用pgAgent模式和表的权限的应用程序都可以管理pgAgent的作业和计划。这只是SQL。