【问题标题】:Manual schedule in PostgreSQL?PostgreSQL 中的手动计划?
【发布时间】:2019-03-16 04:12:47
【问题描述】:

我现在开始使用 PostgreSQL,我想知道我是否可以安排任务/工作(在 SQL 中)由 db 完成,而无需使用 pgAgent。

我正在开发一个管理员需要安排促销活动的系统。例如,从第 X 天到第 Y 天,有一个 Z 促销活动。这必须在系统界面 (UI) 中,在将命令发送到数据库的页面上完成。我只需要在适当的时候执行一条 SQL 命令。


我在互联网上搜索过,我发现的只是关于 pgAgent 或如何配置它。我不想要这个。据我所见,pgAgent 只能通过 pgAdmin 界面工作,系统管理员无法对 pgAdmin 有所了解......或者不是(我是 PostgreSQL 新手)......? :/

在 pgAdmin 中,创建新作业时,我也单击了帮助按钮,但除了通过 pgAdmin 界面设置所有内容外,并没有多说。

有什么方法可以实现吗?有替代品吗?

感谢您的关注。

【问题讨论】:

  • 大多数人只是使用操作系统内置的调度程序来调度 SQL 脚本,例如cron
  • @a_horse_with_no_name 嗯...你能详细说明一下吗?

标签: database postgresql scheduled-tasks pgagent


【解决方案1】:

PgAgent 不仅仅通过 PgAdmin 工作,而是 PgAdmin 是唯一(当前)与 PgAgent 表交互的 GUI。 PgAgent 是一种专门与自己的表集交互的服务,可以由任何软件修改和报告,而不仅仅是 PgAdmin。 PgAdmin 非常有用,因为它实现了多步作业,并且结果存储在数据库中,可以查询或制作自定义报告。

有很多选择,从开发您自己的类似 PgAgent 的工具,到在 Linux/Unix/Cygwin 中使用 cron 或在 Windows 中使用计划任务。

例如在Linux中,可以通过在/etc/cron.daily/中添加批处理文件的方式在cron中实现每日表导出

sudo -i -u postgres psql -c "copy foo.bar to '/var/lib/dbexports/foo-bar.csv' with csv header" foo_db

或在/etc/cron.d/ 中的文件中导出该文件,特别是在星期一的 5:30 之类的

30 5 * * 1 postgres psql -c "copy foo.bar to '/var/lib/dbexports/foo-bar.csv' with csv header" foo_db

在任何用户的crontab 上或类似。

【讨论】:

  • 嗯,这个我知道。例如,您可以用 pgAdmin 做同样的事情来安排备份,不是吗?但是在服务器机器上编写脚本的这部分不是那些工作和准备服务器机器使用的人的责任吗?老实说,我不明白这部分。我负责建模、准备和管理数据库(即使我不是 DBA),我也创建和管理系统(我是一名分析师和开发人员)。但我相信这不是重点。你看,我需要允许非技术人员使用这个系统(通过网站)来安排活动。所以...(继续阅读下文)
  • 我不能每当有事件或变化迫使来自不同领域的人们一起工作,只是为了在表格中添加一条记录。这很可能在将应用程序调度发送到数据库的系统中完成,不是吗?我不知道。或者它对我来说没有多大意义,或者我没有足够的关于操作系统中脚本的信息(实际上是这样)。你怎么看?营销部门的工作人员是否可以访问系统并安排简单的活动?这可能是错的吗?帮助... :(
  • @Loa 你所说的是基于应用程序的维护工作。 PgAgent 通常由系统管理员而不是最终用户使用。您必须自己构建,并每分钟执行一次以检查您自己的日程安排,这可能是通过单个 PgAgent 作业或 cron 作业触发的。
猜你喜欢
  • 2013-02-05
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多