psql -f запускает только первый запрос в файле - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть файл make_partition.sql, например:

CREATE INDEX my_nice_index ON mytable (ts);

CREATE TABLE mytable_2017_10 AS SELECT * FROM mytable WHERE date_trunc('month', ts) = '2017-10-01';
CREATE TABLE mytable_2017_11 AS SELECT * FROM mytable WHERE date_trunc('month', ts) = '2017-11-01';

Я запускаю его в фоновом режиме, используя screen, а затем команду:

psql postgresql://usr:pw@host.com:5432/db_name -f make_partition.sql

И отсоединиться от экрана.Он завершается, но затем кажется, что был выполнен только первый запрос.Я проверял это несколько раз с тем же результатом.

Как я могу заставить их всех их запустить?Я должен поместить их в процедуру как это? Как запустить несколько SQL-запросов?

1 Ответ

0 голосов
/ 07 февраля 2019

Когда вы «отсоединяетесь» от экрана, вероятно, что процесс отправляет сигнал HUP, и сценарий прекращает выполнение, а выполняемый в данный момент запрос завершается, поскольку он является частью другого процесса.

Вы можете правильно отправить его в фоновый режим и сделать его безопасным для отсоединения несколькими способами, одним из способов является использование команды nohup (подробнее см. man nohup), которая игнорирует сигнал HUP.

В качестве альтернативы можно запустить скрипт, как описано выше, затем приостановить его, нажав CTRL+Z, затем отправить его в фоновый режим, используя bg, и, наконец, убедиться, что он игнорирует сигнал HUP, используяdisown -h (подробнее см. man disown).

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