【发布时间】:2011-09-15 11:50:26
【问题描述】:
我们与Phing 的dbdeploy task 合作为我们的PostgreSQL 数据库执行version control,这完全是一种很好的工作方式。在我们开始使用它之后,我对数据库版本并没有太多问题,除了一个令人烦恼的疑问:我们如何控制数据库包含的数据?
现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我想要生产数据,例如实际有效数据。当然,我可以编写另一个 delta 截断 testdata 并插入实际数据,但不知何故,这感觉很笨重,因为 delta 中唯一的语言是 SQL。在编写这样的 delta 时,处理序列并确保外键关系正确是一件非常痛苦的事情。
所以我认为编写一个从 CSV 文件导入数据的 PHP 脚本可能是有意义的。这实际上会起作用,直到有另一个数据库更改重命名列,这将使 PHP 文件无用。当然,这很容易通过更新脚本以合并数据库更改并重新运行脚本来解决,但这很容易出错,这就是我首先开始使用 dbdeploy 的原因。
所以,我的问题是;在部署更改时如何处理数据,或者更准确地说:如何插入生产环境所需的数据?
【问题讨论】:
-
不应该将生产中的数据通过某种管理界面插入到干净的数据库中吗?我认为 DBDeploy 的想法是使数据库保持最新状态,而无需删除任何生产数据。对于测试,使用一些单独的夹具管理可能比将测试数据保存在增量中更好。 Phpunit 或一些 php 框架有可用的夹具管理。
-
你可能是对的。虽然我不认为整个管理界面是一个好主意;我真的不喜欢那样,因为它太密集了。但不将测试数据保存在 delta 中可能是个好主意。将其发布为答案,我会接受。
-
很抱歉,我没有完全理解问题陈述。有一些 youtube 视频吗?请提供任何链接
标签: database version-control phing dbdeploy