Объединение баз двух SMF-форумов

Автор GoodWrong, 11 января 2007, 20:31:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

GoodWrong

По ходу, проблема актуальна, а решений не особенно, ввиду ее нетривиальности..
Единственное что нашел, пожалуй, http://_www.simplemachines.org/community/index.php?topic=108920, но не до конца..


DeVil_N

Такой вопрос...
Имеется два форума, естествнно, оба SMF. В связи с намечающимся слиянием возникла необходимость их объединить в один. Собственно, вопрос - КАК?

Mavn

прежде чем задавать вопросы используем поиск. Ответ выше в сообщении!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

artem_aka_beast

Возможно ли слияние двух SMF форумов с одинаковой версией?
Естественно каждый довольно развит (5 000 сообщений, 150 пользователей и 30 000 сообщений, 250 пользователей)
Либо есть какие либо возможности по частичному переносу баз?

Вообще, хоть что нибудь возможно сделать?

Avdenago

Теоретически возможно.
Но вот как сделать это ПРАКТИЧЕСКИ я вот не подскажу.
Могу только предположить, что можно все это сделать изрядно поработав "ручками" в базах и слепив из двух баз одну. При этом учесть идентификаторы пользователей и сообщений.

artem_aka_beast

Такие мысли тоже были, но идентификаторы пользователей разные, всё разное.. Ладно, большое спасибо за подтвеждение идеи.

Avdenago

Угу. То есть надо перелопатить всю базу и поменять все ИД пользователей и пользователей в сообщених и еще если где фингурирует.
Потом перебить ИД всех сообщений.
И еще может быть куча всего о чем мы и не подозреваем.

Mavn

Смотрим выше! прежде чем писать сообщения и создавать темы используем поиск!!!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

GoodWrong

Решил выложить решение по объединению двух баз форумов.
Было проверено на форуме со 120 тыс. сообщений и почти 5 тыс. юзеров - http://forum.murman.ru/index.php?topic=10835.0

Конечный скрипт был сделан на основании двух решений, взятых с форума оф. сайта:
1. mergeSMF
Original version for SMF 1.0.x by Oldiesmann at SimpleMachines dot org
Modified version for SMF 1.1RC3 by Resourcez at resourcez dot biz
2. Merge Users by Neakro 2007
аттач merge_original.zip

1. в mergeSMF я сделал полный конверт вместе с юзерами (в оригинале было зарэмлено)
2. Merge Users переделал на основании ввода кода пользователя, а не ника - как было в оригинале.
аттач merge_murman.zip

Пошаговая дока по использованию в самом файле скрипта.

Как делать:
1. сначала запустить 1-ый скрипт (тока резервную копию сделайте)
2. затем склеить вторым скриптом одинаковые профили (если один юзер раньше присутствовал в двух форумах).
Склеивание лучше делать в педальном режиме. Сравнивать адрес почты и пр. инфу в двух профилях. А также выбирать, какой из профилей будет оставлен, а какой грохнут. Я для поиска одинаковых людей сделал специальный sql-запрос на поиск одинаковых ников с одинаковым мылом и в phpMyAdmin проверял по нему). Потому уже вычищал оставшихся. За один раз объединяются два профиля. В принципе не долго, у меня было порядка 50 двойников.

Успехов!

Inter

I'm the law and you can't beat the law

|censored| 'em and their law

Crack down at sundown

wwwserfer

Цитата: GoodWrong от 07 декабря 2007, 16:11:09Я для поиска одинаковых людей сделал специальный sql-запрос на поиск одинаковых ников с одинаковым мылом и в phpMyAdmin проверял по нему).

Если можно, подскажите пожалуйста правильный синтаксис mysql-запроса, буду очень благодарен!

GoodWrong

SELECT memberName, emailAddress, posts from smf_members as s1 where (Select count(id_member) from smf_members where membername = s1.membername) > 1
ORDER BY membername
LIMIT 0,550

wwwserfer

Цитата: GoodWrong от 06 марта 2012, 21:59:28
SELECT memberName, emailAddress, posts from smf_members as s1 where (Select count(id_member) from smf_members where membername = s1.membername) > 1
ORDER BY membername
LIMIT 0,550


Спасибо огромное!  O0 Буду пробовать.

dimans42

тут
спрашивать у пользователя san
он собирал в один всё что там есть, может объяснит.

Mavn

Цитата: dimans42 от 17 августа 2012, 22:19:50
тут
спрашивать у пользователя san
он собирал в один всё что там есть, может объяснит.
а чего там спрашивать когда тут все есть :)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.