我认为我需要做的就是:
创建一个sql文件,例如nameofsqlfile.sql内容:
执行proc_my_sql_funtion();
执行此操作作为cron作业。
但是,我不知道我需要编写的命令,以便将此cron作业作为指定主机,端口,数据库,用户和服务器的postgres函数执行。他的密码......?
答案 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.php 和 http://www.dbforums.com/postgresql/340741-cron-jobs-postgresql.html
或者你可以创建一个bash脚本来包含你的编码并从crontab中调用它