2011-10-18 55 views
7

我認爲我需要做的是:如何創建一個cron作業來運行postgres SQL函數?

  1. 創建SQL文件,例如nameofsqlfile.sql內容:

    執行proc_my_sql_funtion();

  2. 以cron作業執行此操作。

不過,我不知道,我需要寫得到的Postgres的函數指定主機,端口,數據庫執行該cron任務的命令,用戶&他的密碼......?

回答

10

調用它你只需要考慮的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 
3

在大多數情況下,你可以把所有的SQL源的殼「在這裏文件'。有關此文件的好處是,外殼的$ {} MY_VAR甚至單引號擴大,e.g:

#!/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 

因人而異