database - 使用 dbdeploy 部署数据库时控制数据

标签 database version-control phing dbdeploy

我们与 Phing 合作的 dbdeploy taskversion control我们的 PostgreSQL 数据库,这完全是一种很好的工作方式。在我们开始使用它之后,我对数据库版本并没有太多问题,除了一个挥之不去的疑问:我们如何控制数据库包含的数据?

现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我想要生产数据,例如实际有效数据。当然,我可以编写另一个截断测试数据并插入实际数据的增量,但不知何故感觉笨拙和麻烦,因为增量中唯一的语言是 SQL。编写这样的增量时,处理序列并确保外键关系正确是一件非常痛苦的事情。

所以我认为编写一个 PHP 脚本可以从 CSV 文件中导入数据。这实际上是可行的,直到有另一个数据库更改重命名列,这将使 PHP 文件变得无用。当然,通过更新脚本以合并数据库更改并重新运行脚本可以很容易地解决这个问题,但这很容易出错,这也是我最初开始使用 dbdeploy 的原因。

所以,我的问题是;在部署更改时如何处理数据,或者更准确地说:如何插入生产环境所需的数据?

最佳答案

您说得对,应该将测试数据排除在增量之外,就像不应该在生产系统上进行测试一样。你用什么来测试? Phpunit, Selenium ,...?你使用任何php框架吗?

无论如何,最好的方法可能是使用您碰巧使用的任何工具可能已经附带的东西。例如 Symfony 1.x 有相当好的夹具管理。对于测试 PHP 代码,PHPUnit 是一个事实上的标准,它带有一些夹具管理。尝试查看 PHPUnit 文档以获取有关它如何处理数据集的更多信息:http://www.phpunit.de/manual/current/en/database.html#understanding-datasets-and-datatables

关于database - 使用 dbdeploy 部署数据库时控制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430309/

相关文章:

database - Grammar.php 第 39 行中的 ErrorException : Array to string conversion

mysql - SQL - 有没有更好的方法来处理一个表上的多个事务?

database - DBMS 和数据库服务器之间的区别

git 从远程仓库 pull 所有分支

svn - 检查 SVN/subversion 中是否存在某个修订版(或标签)

php - Phing 和 Composer,哪个方向?

sql-server - 在数据库中创建新行后,我应该返回该行的主键还是数据传输对象?

visual-studio-2010 - 将 TortoiseMerge 与 Visual Studio 和 TFS 结合使用 - 合并目标(未找到)

java - 如何开启DDL事务支持?

php - 选取所有fieldone不等于null的字段 + Propel