Импорт из одной базы данных в другую с противоречивыми идентификаторами полей - PullRequest
3 голосов
/ 29 сентября 2010

У меня есть приложение Ruby on Rails с двумя активными средами, Stage и Production.Наша команда разработчиков использует Stage, но мы хотели бы перенести наши данные на рабочий сервер по разным причинам.Однако в новой базе данных есть конфликтующие идентификаторы, так что это не так просто, как извлечь данные из одного места и вставить их в другое.Например, скажем, у нас есть таблица Widgets:

Widget:
  id: 9836
  name: "Staging widget"
  parent_id: 9635
  container_id: 533

Если приведенные выше данные являются одним из наших виджетов, мы не можем выполнить импорт, потому что уже есть виджет с ID 9836 и / илиуже существует контейнер с ID 533, что означает, что нам нужно сканировать цепочку ассоциаций для создания новых контейнеров, прежде чем помещать в них виджеты.

Мы используем базы данных MySQL для обеих сред.Я думал о том, чтобы выполнить импорт и просто добавить 10 000 во все соответствующие столбцы, оканчивающиеся на _id, так как это вывело бы нас за пределы конфликтующих границ, но это кажется плохим решением.инструменты, проекты или идеи, которые могут помочь мне решить эту проблему?

Ответы [ 3 ]

1 голос
/ 29 сентября 2010

Если вы не можете использовать отрицательные идентификаторы, просто добавьте число ко всем импортированным идентификаторам.Число должно быть больше максимального идентификатора из целевой базы данных.

1 голос
/ 29 сентября 2010

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

0 голосов
/ 29 сентября 2010

Хорошо, что вы должны сделать (я предполагаю, что это MySQL, основанный на теге), чтобы запустить следующий SQL (я не парень RoRails, но PHP с MySQL, поэтому я прошу прощения, если это не применимо) :

Этот пост ID одна основная идея

Другой вариант - использовать такую ​​программу, как phpMyAdmin (да, это php), которая по сути является инструментом графического интерфейса базы данных. С phpMyAdmin вы можете экспортировать выбранные поля таблицы. Просто экспортируйте все данные, КРОМЕ поля идентификатора, и затем вы можете просто запустить импорт этих данных.

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

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