4

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

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

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

  • 有没有办法以编程方式在 pagent 中创建/管理作业和日程安排?
  • 如果不是,对于上面的问题,我需要连接到 pagagent 代码的哪些部分才能提供我自己的工作/计划 CRUD 功能?
4

2 回答 2

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 $$;
于 2014-08-17T01:08:22.300 回答
2

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

于 2011-01-31T12:30:10.020 回答