2012-07-27 34 views
0

目标是构建一个简洁的SQL脚本来更改/更新表格,因为在任何两个时间点之间对模式进行了更改。管理对postgresql数据库更新的技巧

例如,我在一台机器上开发,在“A”日,我使用转储&恢复实用程序在生产计算机上安装数据库。然后在开发机器上进行一些更改并测试它们之后,在“B”日,我需要将我的模式的更改传送到我的生产服务器上。

写作我的模式(其中一些可能是实验性的和撤消的)每一个命令的缺点,管理从A点到B点(或B点到F点升级模式的好方法是什么那件事)?

更新:

似乎对数据库DIFF样概念时有很好的理由非常多皱起了眉头。所以这给我留下了新的问题。

  1. 什么是一个简单的方法来清楚地管理你的实验变化从你的生产值得的变化?只要你做一些不利的事情时,将你的开发数据库恢复到最后一个已知的良好状态?

  2. 可以将postgresql配置为以可用作更新脚本的方式记录所有操作?我问的原因是我喜欢与PgAdminIII合作,我宁愿使用它来编写更新脚本以用于构建或试验。

回答

3

总之如果你想这样做在一个可控和“专业”的方式写的每一个命令,我让我的模式

,还有周围没有办法。你应该考虑使用模式的管理工具来帮助您组织和运行这些迁移脚本:

我们与Liquibase体验非常好。我们用它在Oracle,DB2和PostgreSQL上进行迁移。

对于你可能想看看Sqitch

+3

而忘记任何神奇的工具,只是比较两个数据库架构,并生成DDL脚本从点A到D点Postgres的具体解决方案这不是代码,这是具有真实数据的数据库,通过点B和点C从点A到点D非常重要。 – 2012-07-27 19:34:54

+0

@SzymonGuz:好点。试图将“开发”(或测试)数据库与“干净的”生产数据库进行比较(可能是一团糟)将在某些时候失败。 – 2012-07-27 20:00:57

+0

谢谢你的回应。这些都是好的,所以我修改了我的问题。 – andyortlieb 2012-07-28 02:13:56