Перенос данных между базами данных с разными схемами

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

Представьте себе следующую задачу:
1) Существует десктопная программа с графическим, написанная на qt.
2) Программа предназначена для составления специальных словарей, написана через пень-колоду из-за очень сжатых сроков и обладает следующими неприятными моментами:
а) все данные хранятся в множестве sqlite3 баз данных
б) каждый словарь — отдельная база
в) увы (да-да, так не делают, но в данном случае это было необходимо), но блобы тоже хранятся прямо в sqlite3. Там же закодирован тип содержимого, т.е все данные легко восстановимы
г) схема базы изначально была составлена с учётом некоторых не существенных с точки зрения вопроса особенностей

3) Прямо сейчас я пишу веб-приложение для представления всех этих словарей
4) В этом приложении все базы предполагается слить в одну
5) Схема таблиц довольно существенно изменилась, но в целом, модели данных легко отображаются одна на другую в обе стороны.

Изначальная мысль заключалась в том, чтобы написать специальное веб-приложение конвертер, который принимал бы к себе на вход файл sqlite (заполненный словарь), последовательно обходил бы всё содержимое базы со связями, составлял бы промежуточное представление и заливал бы напрямую через контроллер полученные данные в основную базу.

Список проблем:
1) Не понимаю, можно ли каким-то образом в ruby-on-rails динамически цепляться к двум базам (т.е с одной соединение держать постоянно, а к второй — залитой sqlite базе — подключаться на лету, считывать из неё все и заливать в основную)
2) Если нельзя это делать на лету, как это правильно делать статически?
3) В целом, можно было бы написать конвертер на чистом SQL, но тогда может оказаться отдельным геморроем переносить файлы из блобов в paperclip (ну или carrierwave). Ведь так?

Очень хотел бы услышать советы, как всё сделать правильно. Да, о том, что я дятел и сам себе злобный буратино, я знаю, но всё-таки
  • Вопрос задан
  • 4076 просмотров
Решения вопроса 1
@AndreyMorozov
Просто одни модели подключаете к основной базе, другие — ко второй. Т.е. возможно у вас появятся модели-дубликаты, одинаковые по структуре, но подключенные к разным БД. Вот и все. Или я чего не понял?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы