2011-10-18 8 views
7

Suppongo che tutto ciò che devo fare è:Come si crea un processo cron per eseguire una funzione SQL postgres?

  1. Creare un file sql per esempio nomeofsqlfile.sql contenuto:

    eseguire proc_my_sql_funtion();

  2. Eseguire questo come un cron job.

Tuttavia, non so i comandi che avevo bisogno di scrivere per ottenere questo lavoro cron eseguito in funzione postgres per un host specificato, porto, base di dati, l'utente & la sua password ...?

risposta

10

Hai solo bisogno di pensare a cronjob l'esecuzione di un comando di shell in un momento o giorno specificato.

Quindi il tuo primo compito è capire come eseguire il comando della shell.

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

È possibile poi basta aggiungere questo al vostro crontab (vi consiglio di utilizzare crontab -e per evitare di rompere le cose)

# 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

Nella maggior parte dei casi si può mettere tutte le origini SQL in un guscio 'qui documento'. La cosa bella di qui i documenti è che la shell $ {} my_var sono espanse anche all'interno di singoli apici, per esempio:

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

Problemi correlati