web-dev-qa-db-ja.com

postgresQL関数を実行するためのcronジョブを作成するにはどうすればよいですか?

私がする必要があるのは次のことだけだと思います:

  1. SQLファイルを作成します。 nameofsqlfile.sqlの内容:

    proc_my_sql_funtion();を実行します。

  2. これをcronジョブとして実行します。

ただし、このcronジョブを指定されたホスト、ポート、データベース、ユーザー、および彼のパスワードのpostgres関数として実行するために作成する必要のあるコマンドがわかりません...?

9
Phil

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
11
Matthew Rudy

ほとんどの場合、すべての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

3
wildplasser

これをチェックして

http://archives.postgresql.org/pgsql-admin/2000-10/msg00026.php および http://www.dbforums.com/postgresql/340741-cron-jobs -postgresql.html

または、bashスクリプトを作成してコーディングを含め、crontabから呼び出すこともできます。

2
WebDevPT