m33*_*lky 82 postgresql shell user-management
createuser允许在PostgreSQL中创建用户(ROLE).有没有一种简单的方法来检查该用户(名称)是否已经存在?否则createuser返回错误:
createuser: creation of new role failed: ERROR: role "USR_NAME" already exists
Run Code Online (Sandbox Code Playgroud)
更新:解决方案应该可以从shell执行,因此在脚本内部更容易自动化.
Mic*_*ker 142
SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'
Run Code Online (Sandbox Code Playgroud)
在命令行方面(感谢Erwin):
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
Run Code Online (Sandbox Code Playgroud)
如果找到则产生1,没有别的.
那是:
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'" | grep -q 1 || createuser ...
Run Code Online (Sandbox Code Playgroud)
遵循相同的想法而不是检查数据库是否存在
psql -t -c '\du' | cut -d \| -f 1 | grep -qw <user_to_check>
Run Code Online (Sandbox Code Playgroud)
你可以在这样的脚本中使用它:
if psql -t -c '\du' | cut -d \| -f 1 | grep -qw <user_to_check>; then
# user exists
# $? is 0
else
# ruh-roh
# $? is 1
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75811 次 |
| 最近记录: |