создание рабочих мест и графиков программ с помощью pgagent - PullRequest
4 голосов
/ 18 декабря 2010

Есть ли способ создавать и управлять заданиями / расписаниями в pgagent программно, т.е. БЕЗ использования pgAdmin?

Я подозреваю, что может быть способ сделать это, написав клиент postgres с использованием libpq (в случае pgagentне поддерживает это поведение из коробки) - но я не уверен, как это сделать - если мне нужно пойти дальше по написанию моего OWN API для функциональности CRUD задания / расписания.

Так что в основномЯ задаю два вопроса:

  • существует ли способ создавать / администрировать задания и расписания в пагенте программно?
  • Если нет, то на вопрос выше, какие части кода пагентамне нужно подключиться, чтобы обеспечить собственную работу / график CRUD?

Ответы [ 2 ]

3 голосов
/ 17 августа 2014

Ниже будет создано задание, которое выполняется каждую минуту с шагом, вызывающим некоторый 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 $$;
2 голосов
/ 31 января 2011

pgAdmin просто создает несколько операторов SQL, вот и все.Любое приложение, которое может подключаться к базе данных «postgres» и имеет права использовать схему и таблицы pgAgent, может управлять заданиями и расписаниями для pgAgent.Это просто SQL.

...