Биллинговая система Nodeny
10 Ноября 2024, 23:40:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Объединить две базы  (Прочитано 4679 раз)
Tooreagen
Старожил
****

Карма: -7
Offline Offline

Сообщений: 257


Просмотр профиля Email
« : 06 Августа 2017, 15:25:43 »

Подскажите как это сделать? Может есть какой-то скрипт?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4789



Просмотр профиля
« Ответ #1 : 07 Августа 2017, 08:57:08 »

Можно sql командами. Позже покажу, сейчас в командировке
Записан
Tooreagen
Старожил
****

Карма: -7
Offline Offline

Сообщений: 257


Просмотр профиля Email
« Ответ #2 : 07 Августа 2017, 09:18:31 »

А когда примерно? Нужно дней 10 чтобы было готово, может проще перенести все вручную, у меня там 150 записей в той что перенести нужно.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4789



Просмотр профиля
« Ответ #3 : 07 Августа 2017, 16:36:10 »

послезавтра
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #4 : 07 Августа 2017, 22:45:32 »

так обсуждалось же, правда для н50
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4789



Просмотр профиля
« Ответ #5 : 09 Августа 2017, 11:13:37 »

В чем суть:

необходимо увеличить id всех пользователей в одной из баз на число, которое превышает максимальный id в другой базе. Допустим в одной базе id от 1 до 100500, а в другой базе id от 1 до 450. Для внимательных: только  что я сказал "максимальный id в другой базе" - все правильно, максимальный id в первой базе не имеет значение. Берем круглое число, которое больше 450 - допустим 1000. Следовательно по итогу у нас должы id из одной базы быть в диапазоне от 1 до 450, в другой от 1000 и выше. Также на это число (1000) необходимо увеличить id юзеров в связанных таблицах (платежи, допданные и т.д).


Итак:

del -  имя первой базы данных (в ней будет итоговый результат)
nodeny - имя второй базы данных
1000 - число, на которое изменяются id в первой базе данных

Выполняем:

Код:
update del.users set name=concat(name, '!'), id=id+1000;
Внимание! Кроме увеличения id, я также к каждому логину добавил восклицательный знак. Это сделано для того, чтобы все прошло успешно, если в разных базах есть одинаковые логины (иначе сработала б защита на уникальность). Если у вас логины гарантированно одинаковые:

Код:
update del.users set id=id+1000;

Внимание! Вам нужно выполнить либо тот либо тот запрос, не оба!

Увеличиваем id юзеров в таблице платежей:

Код:
update del.pays set mid=mid+1000 where mid>0;

В таблице допданных:

Код:
update del.data0 set uid=uid+1000;

В услугах:

Код:
update del.users_services set uid=uid+1000;

Трафик:

Код:
update del.users_trf set uid=uid+1000;

Если есть таблица привязки мак-ов к юзерам:

Код:
update del.mac_uid set uid=uid+1000 WHERE uid>0;


Объедняем даннные:

Код:
insert into del.users (select * from nodeny.users);
insert into del.pays (select * from nodeny.pays);
insert into del.data0 (select * from nodeny.data0);
insert into del.mac_uid (select * from nodeny.mac_uid);
insert into del.users_trf (select * from nodeny.users_trf);

Если услуги (включая id) на обоих базах одинаковые, то просто копируем:

Код:
insert into del.users_services (select * from nodeny.users_services);


Иначе вам нужно В БАЗЕ 2 заапдейтить id услуг так, чтобы они соответствовали услугам в базе 1, например:
Код:
update nodeny.users_services set service_id = 108 where service_id=3;
update nodeny.users_services set service_id = 114 where service_id=2;
update nodeny.users_services set service_id = service_id - 100;

Здесь я заменил услуг айдишники с 3 на 8, с 2 на 14. Обратите внимание на маневр с добавлением и отниманием сотни, это так надо, влом объяснять зачем.

Начните пока с этого.  Посмотрю какие там мелкие нюансы есть и дополню позже
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!