База данных Seeding Development с данными из производства - PullRequest
0 голосов
/ 27 июня 2018

Я имею дело со сложным приложением Rails, которое использует Postgresql.
Создание семян с нуля может быть слишком сложным (есть много моделей и этапов активации, которые могут работать только в очень конкретном порядке).

Но мне все равно нужны очень точные семена для разработки новых функций.
Есть ли способ перенести некоторые данные из производственной базы данных в разрабатываемую?
Я также предпочел бы не устанавливать гемы и не модифицировать производственное приложение только для этого.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Тоник (отказ от ответственности: я там работаю) имеет решение с открытым исходным кодом для поднабора баз данных Postgres. Он доступен на Github и написан на Python. Вы можете найти его здесь: https://github.com/TonicAI/condenser.

Подмножество является сложной проблемой, потому что вы должны поддерживать ссылочную целостность. Наш подход заключался в построении сетевого графа базы данных, где таблицы - это узлы, а отношения FK - это направленные ребра (от родителя к потомку). Затем мы сортируем график с помощью топологической сортировки и начинаем удаление строк произвольно. Там есть некоторый нюанс и несколько ошибок. Например, ориентированные графы могут содержать циклы, и когда это произойдет, топологическая сортировка потерпит неудачу. Это еще не все, и вы можете прочитать об этом здесь (или просто клонировать репо и получить его).

0 голосов
/ 27 июня 2018

Есть ли способ передать некоторые данные из производственной базы данных в разработку?

Создать дамп только определенных таблиц и заполнить базу данных разработки дамп-файлом sql:

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

The pg_dump have good manual

Но будьте осторожны, часто в таблицах есть внешние ключи и другой персонал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...