从postgresql数据库定期运行查询(ala crontab)

时间:2010-12-13 23:44:11

标签: sql postgresql

我试图在postgresql数据库表中复制(一个最小的)crontab功能,具有类似crontab的语义,如下所示(索引未显示,用于simiplicity):

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
);

我只有架构设计。我想了解如何实现这一点。特别是,如何实现:

  1. 计划表的“定期轮询”
  2. 如何确定要运行的计划
  3. postgresql是否具有我可以构建的任何本机(内置)功能来实现此行为?

2 个答案:

答案 0 :(得分:10)

pgAgent将完成这项工作。可以在Postgresonline.com找到完整的设置。

答案 1 :(得分:2)

我一直在使用psql + crontab。像这样:

此crontab条目将以滚动方式删除超过60天的内容。

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