2011-10-18 20 views
7

que suponer que todo lo que necesita hacer es:¿Cómo creo un trabajo cron para ejecutar una función postgres SQL?

  1. crear un archivo SQL, por ejemplo, nameofsqlfile.sql contents:

    realizar proc_my_sql_funtion();

  2. Ejecute esto como un trabajo cron.

Sin embargo, no sé los comandos que me necesidad de escribir para conseguir este trabajo cron ejecuta en función postgres para un host en particular, el puerto, la base de datos, el usuario & su contraseña ...?

Respuesta

10

Sólo tiene que pensar en tarea programada como la ejecución de un comando de shell a una hora o día especificado.

Así que su primer trabajo es averiguar cómo ejecutar su comando de shell.

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

continuación, puede simplemente agregar esto a su crontab (Le recomiendo que use crontab -e para evitar romper cosas)

# 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

En la mayoría de los casos se puede poner toda la fuente de SQL en una cáscara 'aquí documento'. Lo bueno de aquí es que los documentos $ {} my_var de la cáscara se expanden incluso dentro de las comillas simples, por ejemplo:

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

Cuestiones relacionadas