我们使用Phing的dbdeploy task来处理version control我们的PostgreSQL数据库,这完全是一种很好的工作方式。在我们开始使用它之后,我对数据库版本没有太多问题,除了一个令人烦恼的疑问:我们如何控制数据库包含的数据?
现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我希望拥有生产数据,如实际有效数据。当然,我可以编写另一个delta来截断testdata并插入实际数据,但不知何故感觉笨重而且很麻烦,因为delta中唯一的语言是SQL。在编写这样的三角形时,处理序列并确保外键关系是正确的,这是一个真正的痛苦。
所以我认为编写一个可以从CSV文件中导入数据的PHP脚本是有意义的。这实际上是有效的,直到有另一个数据库更改重命名列,这将导致PHP文件无用。当然,通过更新脚本以合并数据库更改并重新运行脚本可以轻松解决这个问题,但这很容易出错,这就是我开始首先使用dbdeploy的原因。
所以,我的问题是;如何在部署更改时处理数据,或者更准确地说:如何插入生产环境所需的数据?
答案 0 :(得分:1)
你是对的,测试数据应该被排除在增量之外,就像在生产系统上不应该进行测试一样。你用什么测试? Phpunit,Selenium,......?你使用任何PHP框架吗?
无论如何,最好的方法可能是使用您可能使用的任何工具可能已经附带的东西。例如,Symfony 1.x具有相当好的夹具管理。为了测试PHP代码,PHPUnit是事实上的标准,它带有一些夹具管理。尝试查看PHPUnit文档,了解有关它如何处理数据集的更多信息:http://www.phpunit.de/manual/current/en/database.html#understanding-datasets-and-datatables