自动构建脚本以更新postgres中的DB

时间:2014-11-02 02:45:19

标签: java postgresql automation ddl

我们有一个使用postgres数据库在java中制作的系统。 这个数据库经常更改,每周或更短时间更新一次。这些更改是DB(DDL)的结构,通常在函数和字段中添加新功能。

对于DB中的更改,我们通常使用navicat,如下所示: 1-我们使用navicat对数据库结构进行了更改,我们复制了SQL,它为我们所做的每项更改提供了一个XML文件。 2-当我们必须更新生产中的数据库时,我们检查由版本号标识的文件,并更新数据库。 3-然后我们对每个安装的数据库重复这个(总共30个)

我们遇到的问题是整个过程都是手动的,并且很容易忘记将更改复制到XML,因此当我们使用它时,脚本不起作用,甚至在系统需要此更改失败时更糟糕。

因此,我们正在寻找一种自动完成此任务的方法,我们提出了以下想法: 1-我们在navicat中进行更改 2-配置postgres以将DDL中的更改记录到CSV文件中 3-稍后我们读取CSV文件并将更改传递给XML以更新生产数据库

我们遇到的问题是LOG将保存所有更改结构的尝试,包括错误,因此如果我们使用该脚本进行更新,它也将失败。

有没有办法在postgres中只保存日志中成功的DDL更改?

是否有脚本或应用程序来获取DDL更改并自动将其放入脚本中?

有没有更好的方法来自动化这个过程?

1 个答案:

答案 0 :(得分:1)

上述问题有很多答案:-)我使用多种方案管理快速变化的数据库。一种方法是维护一个主数据库(就像你一样)。使用dbtoyaml创建数据库的yaml描述。然后在所有(30)目标上使用yamltodb,这将完成使目标数据库看起来与主数据库完全相同所需的一切。我使用这个软件大约6个月,真是太棒了。 pyrseas。 -g