将生产数据的子集迁移回dev

时间:2010-11-10 23:45:15

标签: mysql ruby-on-rails ruby

在我们的rails应用程序中,我们有时会创建用户创建的数据库条目,我们希望它们成为我们的开发环境的一部分,而不会导出整个表。所以,我们希望能够有一个特殊的'开发和测试'转储。

任何推荐的最佳做法? mysqldump看起来很麻烦,我们也想引入rails关联,所以也许rake任务更有意义。

想法?

3 个答案:

答案 0 :(得分:2)

您可以使用像Pentaho Kettle这样的ETL工具。一旦你有你想要的初始转换设置,你可以在将来轻松地使用不同的参数运行它。通过这种方式,您还可以保留所有关联。我写了一篇关于Pentaho的另一个问题here

如果您提供粗略的架构,我可能会帮助您开始转换的样子。

答案 1 :(得分:2)

我有类似的需求,最后我创建了plugin for that。它是为Rails 2.x开发的,并且对我来说很好,但我最近没有太多用处。

文档缺乏,但很简单。你基本上安装了插件,然后在你的所有模型上都有一个方法to_sql。选项在README中解释。

你可以尝试一下,如果你有任何问题让我知道,我会尽力帮忙。

答案 2 :(得分:0)

我会使用Rails runner脚本来追踪它。这将允许您的代码访问您的Rails应用程序将使用的相同内容,包括数据库初始化。 ActiveRecord将能够利用您定义的模型关系。

在生产数据库中创建一些“转移”表,并将所需数据复制到使用“runner”脚本的数据中。从那里你可以序列化数据,或使用转储工具,因为你将处理减少数量的记录。在开发环境中反转该过程以将数据移动到数据库中。

我需要在远程网络日志的一个应用程序中填充数据库,并编写了一个通过cron定期启动的转轮脚本,从我的站点ftps数据并插入数据。