Задание Cron не может установить sh соединение с базой данных postgresql - PullRequest
0 голосов
/ 05 февраля 2020

Я попытался запустить задание cron с помощью следующего сценария оболочки.

#!/bin/bash

PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

gsutil cp gs://api-bucket/order_status.csv order_status.csv

psql -d  apidb -U apidb  << EOF

DELETE FROM apidbgermany.order_status;
\copy apidb.order_status from '/u01/app/postgres/data/silver01/order_status.csv'  delimiter ',' CSV ;
EOF

Мой cronjob выглядит следующим образом.

* * * * * /u01/app/postgres/data/silver01/order_status.sh &>/tmp/mycommand.log

getting following error

Но если я выполню файл оболочки вручную в командной строке это работает отлично.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Для доступа к удаленному серверу необходимо выполнить команду psql следующим образом:

psql -h postgress_host -d  apidb -U apidb  << EOF
....

в противном случае psql попытаться подключиться к локальному серверу. А при создании сценариев cron всегда используйте путь к исполняемым файлам

/usr/bin/psql ....

(например)

и добавьте в качестве второй строки строки сценария, например:

source ~/.bash_profile

или

source ~/.bashrc

зависит от того, где находятся настройки среды

0 голосов
/ 05 февраля 2020

Также, пожалуйста, используйте расширение pg_cron напрямую, которое решит эту проблему для вас. Вы можете установить крон изнутри postgres. расширение pg_cron

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