Проблема выполнения запросов postgres из командного файла - PullRequest
0 голосов
/ 24 июня 2019

У меня проблема при выполнении командного файла. Мой пакетный файл завершается после того, как он достиг строки, чтобы выполнить запрос postgres

(
echo INSERT INTO Role SET roleName=%role%; INSERT INTO User (login, password, active, role) VALUE (%login%, %password%, 1, LAST_INSERT_ID());
) | psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME%
Кто-нибудь может помочь решить эту проблему?
@echo off
title Create New User
set DB_HOST=localhost
set DB_USER=postgres
set DB_NAME=appdb
@echo Enter a new Login:
set /p login=
ECHO ============================
@echo Enter a new password:
set /p password=
ECHO ============================
@echo Enter again your new password:
set /p passwordConfirm=
goto VerifyPassword
:VerifyPassword
if %password% == %passwordConfirm% goto insertInDatabase
if not %password% == %passwordConfirm% goto PasswordSection
:PasswordSection
@echo Password incorrect, please retype your password
@echo Enter a new password:
set /p password=
ECHO ============================
@echo Enter again your new password:
set /p passwordConfirm=
goto VerifyPassword
:insertInDatabase
ECHO ============================
@echo Choose role of the user Admin A\U User:
set /p role=
@echo Inserting in Database ...
(
echo INSERT INTO Role SET roleName=%role%; INSERT INTO User (login, 
password, active, role) VALUE (%login%, %password%, 1, LAST_INSERT_ID());
) | psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME%
pause
exit

1 Ответ

0 голосов
/ 25 июня 2019

Я думаю, есть две проблемы: 1. Скобки должны быть экранированы 2. Вы запрашиваете синтаксические ошибки.

Попробуйте это:

(
    echo INSERT INTO role ^(Name^) select '%role%' where not exists ^(select 1 from role where lower^(name^) = lower^('%role%'^)^);
    echo INSERT INTO User ^(login, password, active, role^) select '%login%', '%password%', true, r.id from role r where lower^(name^) = lower^('%role%'^);
) | psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...