Я обрабатываю .sql файлы с помощью bash автоматически в моем CI-решении в цикле for, чтобы отследить ошибочные миграции перед развертыванием.
MIGS - это массив bash, содержащий во времени порядок .sql в папке
for sqlfile in ${MIGS[@]};
do
psql myproject_unit < $sqlfile
done
Есть ли способ прекратить обработку .sql, если условие выполнено?
Итак, что я делаю сейчас:
файл sql20180515n.sql
CREATE TABLE IF NOT EXISTS something (
...
/* imagine here other 400 lines of SQL */
Что я ищу (замените первые две строки на правильный синтаксис, если применимо, или скажите, если это невозможно)
IF TABLE_EXISTS(something) /* we already ran, no need */
EXIT;
CREATE TABLE something (
...
/* imagine here other 400 lines of SQL */
Итак, чтобы подтвердить: если условие выполнено (таблица / столбец / триггер / индекс уже существует), я бы хотел перейти к следующему источнику .sql в цикле my for, поэтому не закрывайте всю оболочку, только psql процессор, как определено в файле .sql, когда его завершать.