为PostgreSQL编写脚本以更新数据库?

为PostgreSQL编写脚本以更新数据库?,postgresql,versioning,Postgresql,Versioning,我需要编写一个更新脚本,检查数据库中是否存在某些表、索引等,如果不存在,则创建它们。我一直无法弄清楚如何进行这些检查,因为当我在PgAdmin的查询窗口中键入消息时,在IF中不断出现语法错误 我是否必须在公共模式中编写一个存储过程,使用Pl/pgSQL执行这些更新,并执行它来进行更新?希望我可以编写一个脚本,在不创建额外数据库对象的情况下运行该脚本来完成任务。您研究过了吗 这将返回(除其他外)数据库中存在的模式和表。在不了解更多你想要的东西的情况下,这似乎是一个合理的起点。你调查过吗 这将返回(

我需要编写一个更新脚本,检查数据库中是否存在某些表、索引等,如果不存在,则创建它们。我一直无法弄清楚如何进行这些检查,因为当我在PgAdmin的查询窗口中键入消息时,在IF中不断出现语法错误

我是否必须在公共模式中编写一个存储过程,使用Pl/pgSQL执行这些更新,并执行它来进行更新?希望我可以编写一个脚本,在不创建额外数据库对象的情况下运行该脚本来完成任务。

您研究过了吗

这将返回(除其他外)数据库中存在的模式和表。在不了解更多你想要的东西的情况下,这似乎是一个合理的起点。

你调查过吗


这将返回(除其他外)数据库中存在的模式和表。在不了解更多您要查找的内容的情况下,这似乎是一个合理的起点。

如果您使用的是PostgreSQL 9.1,您可以使用
创建表。。。如果不存在

在9.0上,您可以将
IF
条件代码包装到
DO
块中:


在此之前,您必须编写一个函数来实现所需的功能。

如果您使用的是PostgreSQL 9.1,则可以使用
创建表。。。如果不存在

在9.0上,您可以将
IF
条件代码包装到
DO
块中:


在这之前,您必须编写一个函数来实现您想要的功能。

什么样的更新,您要检查什么?什么样的更新,您要检查什么?谢谢,这正是我想要的!谢谢,这正是我想要的!事实上,是的,我查过PGU表格。我使用对这个表(和其他表)的查询来确定需要对数据库模式进行哪些更改。问题是我不知道如何让我的逻辑工作,因为Postgres不支持IF语句,除非它们在某种函数中。DO block语句允许我构建这些IF语句并执行它们。这就是我要找的。事实上,是的,我查过PGU表格。我使用对这个表(和其他表)的查询来确定需要对数据库模式进行哪些更改。问题是我不知道如何让我的逻辑工作,因为Postgres不支持IF语句,除非它们在某种函数中。DO block语句允许我构建这些IF语句并执行它们。这就是我要找的。
select * from pg_tables;