播种开发数据库, 包含来自Production的数据

问题描述 投票:1回答:2

我正在处理使用Postgresql的复杂Rails应用程序。 从头开始创建种子可能过于复杂(有许多模型和激活步骤只能以非常特定的顺序工作)。

但是我确实需要一些非常准确的种子来开发新功能。 有没有办法将一些数据从生产数据库传输到开发数据库? 我也不想安装宝石,也不想为此修改生产应用程序。

ruby-on-rails postgresql development-environment production-environment seeding
2个回答
2
投票

Tonic(免责声明:我在那里工作)有一个开源解决方案,用于对Postgres数据库进行子集化。它在Github上可用,用Python编写。你可以在这里找到它:https://github.com/TonicAI/condenser

子集是一个难题,因为您必须保持参照完整性。我们的方法是构建数据库的网络图,其中Tables是节点,FK关系是有向边(从父到子)。然后我们通过topological sort对图形进行排序,并开始机会性地删除行。虽然有一些细微差别和一些陷阱。例如,有向图可以包含循环,当发生这种情况时,拓扑排序将失败。还有更多内容,你可以阅读更多关于它here(或只是克隆回购并拥有它)。


1
投票

有没有办法将一些数据从生产数据库传输到开发数据库?

仅转储特定的表并使用转储的sql文件为您的开发数据库播种:

pg_dump -d production_database -t table_one -t table_two ... > /tmp/dev_dump.sql 

The pg_dump have good manual

但要小心,经常桌上有外键和其他工作人员。

© www.soinside.com 2019 - 2024. All rights reserved.