Скрипт в Windows с проверкой наличия базы и создание базы при ее отсутствии?

Всем привет!
Вот задумал написать в Windows такой файлец script.sql
который бы вызывался например так
psql -h 127.0.0.1 -U postgres -d postgres -f "C:\script.sql"
,
а внутри его хотел сделать проверку на наличие базы, и если база отсутствует, то создать ее и накатить дамп. Но если база есть, то не накатывать дамп соответственно, а сделать кое-что другое, например вызвать какую-нть функцию.
И что-то я завис. В Постгрессе не мастер.

Если в файле script.sql создать функцию или анонимный блок, которые позволяют проверить наличие базы и имеют оператор сравнения, то создается проблема с Create database, ибо внутри транзакции вызывать сие действие не разрешено.

Можно ли вообще написать подобный скрипт?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

1. Запросить список БД в psql

1. Запросить список БД в psql и поискать вашу базу там
или
2. Запросить таблицу из БД, которая там должна быть и в случае ошибки создать БД

В скрипте запустить команду CREATE DATABASE труда не составляет, не обязательно всё делать средствами одного SQL

Спасибо! Хочу сделать всё

Спасибо!

Хочу сделать всё автоматически.
Если выбираю вариант 2, то запросить таблицу с помощью psql ?
А как перехватить ошибку, чтобы создать базу?

psql вернёт ненулевой

psql вернёт ненулевой код

#!/bin/sh

psql .....
ERR=$?
if [ $ERR -ne 0 ]
then
echo ошибка во время выполнения запроса
fi

Да, спасибо! уже тоже дошел

Да, спасибо!
уже тоже дошел до этого, только в bat-файле ибо в Винде.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023