当使用 psql 时,我总是必须set role ...
先发出问题。
在接受交互式命令之前可以自动执行吗?
例如:
psql -h HOST -U USER -c "set role 'ROLE';" -f -
这几乎达到了我想要的效果,除了它直接读取输入(没有 readline)。
我无法使用,-U ROLE
因为该角色不允许登录。
答案1
除非传递 -X 选项,否则 psql 在连接到数据库之后但在接受正常命令之前,会尝试从系统范围的启动文件 (psqlrc) 以及用户的个人启动文件 (~/.psqlrc) 读取并执行命令。
和:
ENVIRONMENT PSQLRC 用户 .psqlrc 文件的备用位置。执行波形符 (~) 扩展。
所以你可以创建一个 set-role.sql 文件:
set role 'ROLE';
然后运行
PSQLRC=set-role.sql psql -h HOST -U USER
psql 将执行 set 命令,然后显示提示(带有自动完成功能)。