Как собрать несколько БД в одну???

Alexandor1984

Новичок
Как собрать несколько БД в одну???

Всем привет. Народ, такая проблема.
Допустим, есть несколько контор и у каждой есть всоя БД на MySQL.
Задача состоит в следующем: необходимо все эти БД собрать в одну на отдельном сервере. Структура всех БД одинаковая. Подскажите, как лучше это сделать?
 

voituk

прозревший
Куда уж может быть проще чем поручить это дело профессионалу.
 

Marquis

Новичок
Я не жадный, бери [m]mysql[/m], тут есть вся необходимая для тебя информация.
ps. А с чем у тебя трудности то?
 

Alexandor1984

Новичок
Допустим, есть таблица USER в которой есть поля: Id_user, name …
Id_user – первичный ключ. Такие таблицы есть в каждой конторе. Если эти таблицы собрать в одну, то Id_user уже не будет уникальным. Может добавить поле с названием конторы?
 

Marquis

Новичок
Может добавить поле с названием конторы?
можно, если это реально требует задача. Что мешает всех юзеров сложить в одну таблицу? Видимо есть связи с другими таблицами по id юзера, тада это косяк проектировщика БД.
 

Alexandor1984

Новичок
БД состоит из 5 таблиц. И USER - таблица связана с ними.
При сборке всех USER-ов в одну таблицу, их id могут совпадать ибо нет гарагтии, что в каждой конторе id юзеров разные.
 

Marquis

Новичок
БД состоит из 5 таблиц. И USER - таблица связана с ними.
При сборке всех USER-ов в одну таблицу, их id могут совпадать ибо нет гарагтии, что в каждой конторе id юзеров разные.
Ну и?
 

Alexandor1984

Новичок
А мне надо, чтоб все юзеры в общей таблице были уникальный. Переопределять их айди нельзя, ибо нарушиться связь с другими таблицами.
 

Alexandre

PHPПенсионер
Alexandor1984конвертация и миграция БД - дело долгое и нудное. Я сейчас занимаюсь конвертацией данных (37 таблиц)... приходится строить временные перекодировочные таблицы. В общем случае - задача нетривиальная и общих рецептов нет.
сливаешь последовательно все данные из одной БД в другую сперва в обну таблицу, строишь таблицы users_old со старыми и новыми айдишниками, потом засасываешь все таблицы со связями, испрользуя таблицу users_old перекодироуешь эти всязи....
и так далее... медленная и последовательная работа заполнения таблиц.
 

Marquis

Новичок
Переопределять их айди нельзя, ибо нарушиться связь с другими таблицами.
Видимо есть связи с другими таблицами по id юзера, тада это косяк проектировщика БД
Id юзеров изменятся как не крути. Следовательно теперь тебе необходимо найти пути решения этой задачи, т.к. подправить таблицы с минимальными потерями.
 

bubblegum

Новичок
* задать значение, с которого будет начинаться ид юзеров после изменений, полученный диапазон не должен пересекаться с ид в той же таблице другой базы
* пройтись по таблице юзеров, изменять ид и одновременно его менять в других таблицах, в которых внешний ключ смотрит на юзерс.ид
* то же самое с прочими таблицами, ид которых для других таблиц этой же базы есть внешний ключ
* полученную базу сливаем в одну инсертами, для юзерс и похожих - перечислять списке полей запроса ид, для таблиц где ид несущественен - не перечислять его
Эта операция однократная, т к в следующий раз инсертами уже не прокатит - появятся дубликаты;
так примерно я бы сделал
 

bubblegum

Новичок
И? получим объединенные данные:
юзерс (ид, контора_ид,имя)
55 1 иванов
55 2 сидоров
а дальше.. - предложите парню переписать все запросы в приложении ?
или подразумевалась некая арифметическая операция ))), был юзерс.ид==55, прибавили ид подразделения==1 - стало равно 56
 
Сверху