首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果PostgreSQL不存在,是否模拟创建数据库?

如果PostgreSQL不存在,是否模拟创建数据库?
EN

Stack Overflow用户
提问于 2013-08-23 03:21:09
回答 9查看 169.7K关注 0票数 163

我想通过JDBC创建一个不存在的数据库。与MySQL不同,PostgreSQL不支持create if not exists语法。实现这一目标的最佳方法是什么?

应用程序不知道数据库是否存在。它应该进行检查,如果数据库存在,就应该使用它。因此,连接到所需的数据库是有意义的,如果由于不存在数据库而导致连接失败,它应该创建新的数据库(通过连接到默认的postgres数据库)。我检查了Postgres返回的错误代码,但我找不到任何种类相同的相关代码。

实现这一点的另一种方法是连接到postgres数据库,并检查所需的数据库是否存在,然后采取相应的操作。第二个问题有点单调乏味。

有没有办法在Postgres中实现这一功能?

EN

Stack Overflow用户

发布于 2021-06-03 22:12:57

在我看来,在阅读完所有这些复杂的解决方案后,我几乎忘记了有一种简单的方法可以在shell级别上处理它。尽管这可能不是一些人想要的,但我认为很多人想要简单,而不是创建过程和复杂的构造。

我正在使用docker,下面是我的bash脚本中的重要片段,它在devsetup中加载数据:

代码语言:javascript
运行
复制
execute_psql_command_pipe () {
         $DOCKER_COMMAND exec -it $POSTGRES_CONTAINER bash -c "echo \"$1\"| psql -h localhost -U postgres || echo psql command failed - object likely exists"
}

read -r -d '' CREATE_USER_COMMANDS << EOM
create user User1 WITH PASSWORD 'password';
create user User2 WITH PASSWORD 'password';
EOM

execute_psql_command_pipe "$CREATE_USER_COMMANDS"

它有一些错误,但这是我能找到的最简单的方法来让它做我想要的:在第一次通过脚本时创建,在第二次通过时继续。顺便说一句,echo输出不会显示,但命令会继续,因为echo命令会以0退出。

可以对任何命令(如db create)执行相同的操作。对于可能发生的任何其他错误,这显然也会失败(或成功,取决于透视图),但您将获得psql输出打印机,因此可以添加更多处理。

票数 0
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18389124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档