我正在处理一个使用 Postgresql 的复杂 Rails 应用程序。
从头开始创建种子可能过于复杂(有许多模型和激活步骤只能以非常特定的顺序工作)。
但我确实需要一些非常准确的种子来开发新功能。
有没有办法将一些数据从生产数据库传输到开发数据库?
我也不想为此安装 gems 或修改生产应用程序。
最佳答案
Tonic(免责声明:我在那里工作)有一个用于子集 Postgres 数据库的开源解决方案。它在 Github 上可用,是用 Python 编写的。您可以在这里找到它:https://github.com/TonicAI/condenser .
子集化是一个难题,因为您必须保持参照完整性。我们的方法是构建数据库的网络图,其中表是节点,FK 关系是有向边(从父到子)。然后我们通过 topological sort 对图表进行排序并开始机会性地删除行。那里有一些细微差别,但也有一些陷阱。例如,有向图可以包含循环,当这种情况发生时,拓扑排序将失败。它还有很多内容,您可以阅读更多相关信息 here (或者只是克隆 repo 并拥有它)。
关于ruby-on-rails - 使用来自生产的数据播种开发数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062950/