Postgres/psql sql 脚本:如何将参数作为部分名称传递

问题描述 投票:0回答:1

Postgres/psql 13

大家好!

我必须创建多个具有相同前缀的角色:

create role XXX_admin...
create role XXX_owner...
create role XXX_user...

然后我想创建一个 sql 脚本,通过使用 var rname=XXX:

创建这些用户
cat myscrpt.sql
create role :<rname>_admin...;
create role :<rname>_owner...;
create role :<rname>_user...;

针对多个 rname(XXX、YYY、ZZZ 等)运行它。

for i in XXX YYY ZZZ
do
   psql -p5460 -d mydb -f myscrpt.sql -v rname=$i;
done

如何分隔 varname 和后缀?

postgresql psql sql-scripts
1个回答
0
投票

您可以使用自定义 sql 脚本/函数。只需更新您当前的脚本即可。

这样的东西可能会起作用。 (伪代码):

//Your function
BEGIN
    FOR name IN ('XXX', 'YYY', 'ZZZ')
    LOOP
        Construct the SQL statement to create _admin role using name
        Execute the constructed SQL statement

        // Similarly for others (owner,user)

    END LOOP;
END;

现在,只需执行脚本即可。

psql -p 5460 -d mydb -f myscript.sql
© www.soinside.com 2019 - 2024. All rights reserved.