2011-10-18 14 views
7

Zakładam, że wszystko, co muszę zrobić, to:Jak utworzyć zadanie cron, aby uruchomić funkcję SQL PostgreS?

  1. Utwórz plik sql np zawartość nameofsqlfile.sql:

    wykonać proc_my_sql_funtion();

  2. Wykonaj to jako zadanie cron.

Jednak nie wiem polecenia, które by trzeba napisać aby dostać tę pracę cron wykonywany jako funkcja postgres dla wybranego serwera, portu, bazy danych, użytkownika & swoje hasło ...?

Odpowiedz

10

Trzeba tylko myśleć cron jak uruchomiona polecenie powłoki o określonej godzinie lub dniu.

Pierwszą pracą jest ustalenie, jak uruchomić polecenie powłoki.

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

Następnie można po prostu dodać do swojej crontab (polecam użyć crontab -e aby uniknąć uszkodzenia rzeczy)

# 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

W większości przypadków można umieścić wszystkie źródła sql w skorupkach „tutaj dokument'. Zaletą jest to, że tutaj dokumentach skorupy za $ {MY_VAR} są rozszerzane nawet w pojedynczych cudzysłowach, np:

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

Powiązane problemy