如何创建一个cron作业来运行postgresQL函数?

时间:2011-10-18 09:56:35

标签: sql linux function postgresql cron

我认为我需要做的就是:

  1. 创建一个sql文件,例如nameofsqlfile.sql内容:

    执行proc_my_sql_funtion();

  2. 执行此操作作为cron作业。

  3. 但是,我不知道我需要编写的命令,以便将此cron作业作为指定主机,端口,数据库,用户和服务器的postgres函数执行。他的密码......?

3 个答案:

答案 0 :(得分:11)

您只需要将cronjob视为在指定的时间或日期运行shell命令。

所以你的第一份工作就是找出如何运行shell命令。

psql --host host.example.com --port 12345 --dbname nameofdatabase < my.sql

然后你可以将它添加到你的crontab(我建议你使用crontab -e来避免破坏)

# runs your command at 00:00 every day
#
# min hour wday month mday command-to-run
    0    0    *     *    * psql --host host.example.com --port 12345 --dbname nameofdatabase < my.sql

答案 1 :(得分:3)

在大多数情况下,您可以将所有sql源放在shell“here document”中。这里文件的好处是shell的$ {MY_VAR}甚至在单引号中扩展了,例如:

#!/bin/sh

THE_DATABASE=personnel
MY_TABLE=employee
THE_DATE_VARIABLE_NAME=hire_date
THE_MONTH=10
THE_DAY=01

psql ${THE_DATABASE} <<THE_END
  SELECT COUNT(*) FROM ${MY_TABLE}
  WHERE ${THE_DATE_VARIABLE_NAME} >= '2011-${THE_MONTH}-${THE_DAY}'::DATE
THE_END

YMMV

答案 2 :(得分:2)

检查

http://archives.postgresql.org/pgsql-admin/2000-10/msg00026.phphttp://www.dbforums.com/postgresql/340741-cron-jobs-postgresql.html

或者你可以创建一个bash脚本来包含你的编码并从crontab中调用它