2011-10-18 5 views
7

मुझे लगता है सब मैं क्या करने की जरूरत है कि करने के लिए:पोस्टग्रेस एसक्यूएल फ़ंक्शन चलाने के लिए मैं क्रॉन जॉब कैसे बना सकता हूं?

  1. जैसे एक एसक्यूएल फ़ाइल बनाएँ nameofsqlfile.sql सामग्री:

    proc_my_sql_funtion();

  2. इसे क्रॉन नौकरी के रूप में निष्पादित करें।

हालांकि, मैं आदेशों कि मैं इस क्रॉन एक निर्दिष्ट मेजबान, बंदरगाह, डेटाबेस के लिए एक postgres समारोह के रूप में मार डाला नौकरी पाने के लिए लिखने के लिए आवश्यकता होगी, उपयोगकर्ता & अपने पासवर्ड मालूम नहीं है ...?

उत्तर

10

से फोन तुम सिर्फ एक चल के रूप में cronjob की सोचने की जरूरत के लिए एक bash स्क्रिप्ट बना सकते हैं निर्दिष्ट समय या दिन पर खोल कमांड।

तो आपका पहला काम यह है कि अपना खोल कमांड कैसे चलाएं।

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

ज्यादातर मामलों में आप एक खोल में एसक्यूएल स्रोत के सभी डाल सकते हैं दस्तावेज़ '। यहाँ दस्तावेजों के बारे में अच्छी बात यह है कि खोल के $ {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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^