2010-12-18 83 views
4

pgAdentでジョブ/スケジュールをプログラムで作成および管理する方法はありますか?ジョブとスケジュールをpgagentを使用してプログラムで作成する

libpqを使ってpostgresクライアントを書く方法があると思われます(pgagentがこの動作をサポートしていない場合に備えて) - しかし、どうすればいいかわかりません - もし必要ならばジョブ/スケジュールCRUD機能のための自分のOWN APIを書いています。

だから、基本的に私は2つの質問を求めています:

  • をプログラム的pagent内のジョブとスケジュールを管理/作成する方法はありますか?
  • 上記の質問に、私自身の仕事/スケジュールCRUD機能を提供するためにページャコードのどの部分にフックする必要がありますか?

答えて

2

pgAdminはいくつかのSQL文を作成するだけです。データベース "postgres"に接続でき、pgAgentスキーマとテーブルを使用する権限を持つアプリケーションは、pgAgentのジョブとスケジュールを管理できます。それはただのSQLです。

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 $$; 
関連する問題