createuser
允许在PostgreSQL中创建用户(角色)。有没有一种简单的方法来检查该用户(Name)是否已经存在?否则,createuser返回一个错误:
createuser: creation of new role failed: ERROR: role "USR_NAME" already exists
更新:解决方案最好是可以从shell中执行,这样更容易在脚本中实现自动化。
发布于 2011-12-18 02:04:13
SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'
在命令行方面(感谢Erwin):
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
如果找到,则返回1,否则不生成任何其他值。
这就是:
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'" | grep -q 1 || createuser ...
发布于 2016-08-19 17:43:15
遵循与check if a db exists相同的想法
psql -t -c '\du' | cut -d \| -f 1 | grep -qw <user_to_check>
您可以在脚本中使用它,如下所示:
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
发布于 2019-01-11 20:34:43
psql -qtA -c "\du USR_NAME" | cut -d "|" -f 1
[[ -n $(psql -qtA -c "\du ${1}" | cut -d "|" -f 1) ]] && echo "exists" || echo "does not exist"
https://stackoverflow.com/questions/8546759
复制相似问题