私がする必要があるのは次のことだけだと思います:
SQLファイルを作成します。 nameofsqlfile.sqlの内容:
proc_my_sql_funtion();を実行します。
これをcronジョブとして実行します。
ただし、このcronジョブを指定されたホスト、ポート、データベース、ユーザー、および彼のパスワードのpostgres関数として実行するために作成する必要のあるコマンドがわかりません...?
Cronjobは、指定された時間または曜日にシェルコマンドを実行するものと考える必要があります。
したがって、最初の仕事は、シェルコマンドの実行方法を理解することです。
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
ほとんどの場合、すべてのSQLソースを「ヒアドキュメント」のシェルに配置できます。ヒアドキュメントの良いところは、シェルの$ {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
これをチェックして
http://archives.postgresql.org/pgsql-admin/2000-10/msg00026.php および http://www.dbforums.com/postgresql/340741-cron-jobs -postgresql.html
または、bashスクリプトを作成してコーディングを含め、crontabから呼び出すこともできます。