Всем привет!
Вот задумал написать в 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-файле ибо в Винде.