Как создать задание cron для запуска функции postgres SQL? - PullRequest
9 голосов
/ 18 октября 2011

Я предполагаю, что все, что мне нужно сделать, это:

  1. Создать файл sql, например nameofsqlfile.sql содержание:

    execute proc_my_sql_funtion ();

  2. Выполнить это как задание cron.

Однако я не знаю команд, которые мне нужно было бы написать, чтобы выполнить эту задачу cron как функцию postgres для указанного хоста, порта, базы данных, пользователя и его пароля ...?

Ответы [ 3 ]

11 голосов
/ 18 октября 2011

Вам просто нужно думать о 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
3 голосов
/ 19 октября 2011

В большинстве случаев вы можете поместить весь исходный текст sql в оболочку 'here document'.Приятно, что в этих документах оболочка $ {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

2 голосов
/ 18 октября 2011

Проверьте это

http://archives.postgresql.org/pgsql-admin/2000-10/msg00026.php а также http://www.dbforums.com/postgresql/340741-cron-jobs-postgresql.html

или вы можете просто создать скрипт bash для включения вашей кодировки и вызвать его из crontab

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...