如何创build一个cron作业来运行postgres SQL函数?

我认为我需要做的就是:

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

    执行proc_my_sql_funtion();

  2. cron作业执行此操作。

然而,我不知道我需要写的命令来获得这个cron作业作为一个指定的主机,端口,数据库,用户和他的密码postgres函数执行…?

你只需要把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 

在大多数情况下,你可以把所有的SQL源文件放在一个shell里。 关于这里的文档的好处是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 

因人而异

检查这个

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

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