2011-10-18 26 views
7

Tôi giả định rằng tất cả những gì tôi cần làm là:Làm cách nào để tạo một công việc cron để chạy một hàm postgres SQL?

  1. Tạo tệp sql, ví dụ: nội dung nameofsqlfile.sql:

    thực hiện proc_my_sql_funtion();

  2. Thực hiện việc này dưới dạng công việc cron.

Tuy nhiên, tôi không biết các lệnh mà tôi muốn cần phải viết để có được công việc định kỳ này được thực hiện như một hàm postgres cho một máy chủ cụ thể, cảng, cơ sở dữ liệu, người sử dụng & mật khẩu của mình ...?

Trả lời

10

Bạn chỉ cần nghĩ về cronjob như chạy một lệnh shell tại một thời điểm hoặc ngày cụ thể.

Vì vậy, công việc đầu tiên của bạn là tìm hiểu cách chạy lệnh shell của bạn.

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

Bạn có thể sau đó chỉ cần thêm video này vào crontab của bạn (tôi khuyên bạn nên sử dụng crontab -e để tránh điều phá vỡ)

# 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

Trong hầu hết các trường hợp, bạn có thể đặt tất cả các nguồn sql trong một vỏ 'ở đây tài liệu '. Những điều tốt đẹp về đây các tài liệu là của vỏ $ {} MY_VAR được mở rộng ngay cả trong dấu nháy đơn, ví dụ:

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

Các vấn đề liên quan