Postgresql 从批处理文件执行postgres查询时出现问题

Postgresql 从批处理文件执行postgres查询时出现问题,postgresql,batch-file,Postgresql,Batch File,我在执行批处理文件时遇到问题。 我的批处理文件在他到达执行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_N

我在执行批处理文件时遇到问题。
我的批处理文件在他到达执行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% 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%

好吧,这似乎不是一个好主意!
(
    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%