2010-12-13 12 views
5

Próbuję replikować (a mininimal) funkcjonalność crontab w tabeli bazy danych PostgreSQL z crontab-like semantyki następująco poniżej (indeksy nie pokazanym na simiplicity):zapytań run okresowo (ala crontab) z bazy danych postgresql

create table schedule (
id int not null primary key, 
command text 
); 

create table schedule_detail(
schedule_id int not null references schedule(id), 
sd_minute smallint not null, 
sd_hour smallint not null, 
sd_day smallint not null, 
sd_month smallint not null, 
sd_year smallint not null, 
sd_dayofweek smallint not null 
); 

Dotarłem tylko do projektu schematu. Chciałbym przedstawić kilka pomysłów na to, jak mogę to wdrożyć. W szczególności, jak wdrożyć:

  1. do „okresowego odpytywania” tabeli harmonogramu
  2. Jak określić, która harmonogram uruchomienia

PostgreSQL ma żadnego natywnego (wbudowane) funkcje, które ja można zbudować, aby osiągnąć to zachowanie?

Odpowiedz

8

pgAgent wykona zadanie. Kompletną konfigurację można znaleźć pod adresem Postgresonline.com.

+0

+1 nawet używa używa [format cron-style] (http://www.pgadmin.org/docs/1.4/pgagent-schedules.html) –

+0

postanowiłem 'roll moje własne' ponieważ pgAgent jest przesadny, jeśli tego chcę. Mimo to, przyjmuję to jako odpowiedź, ponieważ ustawi mnie na właściwej ścieżce – skyeagle

+0

@skyeagle, chciałbym zobaczyć twoją wersję pgAgent, czy zrobiłeś to z pgsql lub innym językiem skryptowym? – indago

1

Używam do tego programu psql + crontab. W ten sposób:

Ten wpis crontab spowoduje usunięcie treści starszych niż 60 dni na bieżąco.

0 16 * * * PGPASSWORD=mypassword psql -Umyuser -dmyschema -c "delete from mytable where created_at < now() - interval '60 days'" 
Powiązane problemy