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 和后缀?
您可以使用自定义 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