如果不存在,则创建Postgres数据库。

14

有没有类似于 CREATE TABLE IF NOT EXISTS 的命令可以用来创建数据库?

背景:我正在编写一个脚本,在未知系统上自动设置PostgreSQL中的模式。我不确定数据库(甚至是模式的一部分)是否已经部署,因此我想构建我的代码,以避免失败(或者最好甚至不显示错误),如果某些结构已经存在。我希望能够区分阻止我创建数据库的错误(因此放弃将来的模式更改,因为它们无法工作)和此错误。

1个回答

6

不可以,但是你可以查询pg_catalog.pg_database表格来查看它是否存在。


1
你需要在函数中完成这个操作,但是在9.3版本中这样做是行不通的,因为Postgres不允许在函数或多命令字符串中创建/删除数据库。 - ahanin
但是你可以用喜欢的语言编写一个外部脚本,比如PHP、Python、Perl等。 - Eelke
1
使用 DROP TABLE IF EXISTS "foo"; CREATE TABLE "foo"; 不是更简单吗? - Enwired
2
@Enwired - 如果你不想删除已存在的表怎么办?如果它不存在,你可能想要创建它,但如果它存在,就让它保持不变。 - Steve Midgley
如果这是你想要的,那么我指定的命令对你来说就没有用处了。原始问题实际上是关于创建数据库而不是表格,所以我的评论无意中离题了!抱歉。 - Enwired

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接