2010-11-10 2 views
3

В нашем приложении rails у нас иногда есть записи db, созданные пользователями, которые мы хотели бы сделать частью нашей среды dev, без экспорта всей таблицы. Таким образом, мы хотели бы иметь специальный дамп «dev and testing».Миграция подмножеств производственных данных обратно в dev

Любые рекомендуемые рекомендации? mysqldump кажется довольно громоздким, и мы также хотели бы задействовать ассоциации рельсов, так что, возможно, задача рейка будет иметь больше смысла.

Идеи?

ответ

2

Вы можете использовать инструмент ETL, например Pentaho Kettle. После того, как вы настроите начальную настройку преобразования, вы можете легко запустить ее с различными параметрами в будущем. Таким образом, вы также можете сохранить все свои ассоциации. Я написал небольшую рекламу о Pentaho для другого вопроса here.

Если вы предлагаете грубую схему, я, вероятно, помогу вам начать работу над тем, как будет выглядеть ваша трансформация.

2

У меня была аналогичная потребность, и я закончил создание plugin for that. Он был разработан для Rails 2.x и отлично работал для меня, но в последнее время у меня мало пользы.

Документация отсутствует, но это довольно просто. Вы в основном устанавливаете плагин, а затем можете использовать метод to_sql на всех ваших моделях. Опции объясняются в README.

Вы можете попробовать и сообщить мне, есть ли у вас какие-либо проблемы, я постараюсь помочь.

+0

Очень классный код. Однако это захлебнуло некоторые из наших странных ассоциаций, поэтому я набрал простой сценарий, чтобы делать то, что нам нужно. Более ручная работа, но, вероятно, самый простой подход. –

0

Я бы воспользовался сценарием Rails runner. Это позволит вашему коду получить доступ к тем же вещам, что и ваше приложение Rails, включая инициализацию базы данных. ActiveRecord сможет использовать модельные отношения, которые вы определили.

Создайте несколько таблиц «переноса» в своей производственной базе данных и скопируйте нужные данные в те, которые используются сценарий «бегун». Оттуда вы можете сериализовать данные или использовать инструмент дампа, поскольку вы будете иметь дело с уменьшенным количеством записей. Отмените процесс в среде разработки, чтобы переместить данные в базу данных.

Мне нужно было заполнить базу данных в одном из моих приложений из удаленных веб-журналов и написать сценарий бегуна, который периодически запускался через cron, удаляет данные с моего сайта и вставляет данные.

Смежные вопросы