Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Pekkonen

Объединение двух версий одного форума

Рекомендованные сообщения

Всем привет!

 

Есть форум на IPB 3.4.8, в котором из-за сбоев хостинга пришлось временно откатиться на бекап.

 

В результате сейчас имеем 2 версии форума - грубо с 2010 по 2015 год и с 2012 по 2016 год.

Хочется слить данные в один форум, но при использовании стандартного IP.Board Merge Tool из IPB Converters объединение происходит, но после этого часть данных дублируются (с 2010 по 2012 год)...

Форумы, посты, персональные сообщения и т.п. (

 

Можно ли избежать этого каким то образом?

 

Или в данном случае делать объединение только вручную, без использования средств форума?

 

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

 

Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение

Не совсем понятно каким образом дублируются данные с 2010 по 2012, если дублироваться под идее должны с 2012 по 2015, те годы которые пересекаются в двух базах. Если базы не отдельных ветвей тогда оставить с 2012 по 2016, остальное перенести вручную (режим INSERT IGNORE), либо удалить пересекающиеся данные и воспользоваться тем же самым IP.Board Merge Tool

Поделиться сообщением


Ссылка на сообщение

Благодарю за ответ!

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

А потом идут темы с одинаковыми ID, но абсолютно разные по сути...

С постами аналогичная ситуация (

 

остальное перенести вручную (режим INSERT IGNORE)

Это режим чего именно?

Поделиться сообщением


Ссылка на сообщение

А потом идут темы с одинаковыми ID, но абсолютно разные по сути...

Значит это ветви одной когда-то общей базы, ид одинаковые но развивались они от определенного момента по разному. В таком случае INSERT IGNORE не подойдет, нужно удалить данные которые пересекаются и объединить форум в один через Merge Tool. При объединении старые ид потеряются.

Поделиться сообщением


Ссылка на сообщение

Так при удалении данных которые пересекаются часть данных и потеряются (

Пока пробую руками через mysql перенести юзеров, темы и посты.

При этом изменив ID дублирующихся элементов (темы и топики) чтобы избежать потери данных.

После этого буду пробовать пересчитать глобальную статистику и посмотрю что будет на выходе.

Но чувствую что это может быть не самый правильный вариант переноса, поэтому и завел эту тему.

Поделиться сообщением


Ссылка на сообщение

Это режим чего именно?

Когда бэкап вливается в другую базу данных, при этом создаются те записи ид которых отсутствуют в текущей бд. Вам он не подойдет, так как ид существуют, но содержимое не совпадает.

Поделиться сообщением


Ссылка на сообщение

Так руками это всё делать или есть более простой способ внутри самого форума?

В Merge Tool не увидел подходящих для этого настроек

Поделиться сообщением


Ссылка на сообщение

Так при удалении данных которые пересекаются часть данных и потеряются (

Вы объединяете не только по ид, но и по другим полям которые могут служить для идентификации записи, например в таблице members по полю name. Если оно совпадает и в первый и другой бд, тогда с большой долью вероятности это один и тот же пользователь, если нет - тогда пользователи разные.

 

Ид которые пересекаются и имеют имеют одинаковые значения

SELECT m.member_id, m.name FROM db.ibf_members m INNER JOIN db2.ibf_members z ON (z.member_id = m.member_id) WHERE z.name=m.name

Ид которые пересекаются но не соответствуют друг другу

SELECT m.member_id, m.name, z.name as z_name FROM db.ibf_members m INNER JOIN db2.ibf_members z ON (z.member_id = m.member_id) WHERE z.name != m.name

Поделиться сообщением


Ссылка на сообщение

Так руками это всё делать или есть более простой способ внутри самого форума?

Удалять руками (sql запросами). Объединять уже доступными утилитами для объединения двух разных форумов.

Вручную перенести можно только написав свой скрипт для переноса. Там много связей, руками переносить каждую запись явно не вариант.

Поделиться сообщением


Ссылка на сообщение

Спасибо, но вчера при попытке объединения через Merge Tool получил на выходе полное дублирование всех форумов, хотя они и имели полностью идентичные значения по ID и по названию...

Объединять уже доступными утилитами для объединения двух разных форумов. 

Извините, но всё равно не понял как эта утилита сможет объединить следующее:

 

Форум1

Тема1 (ID=10)

Пост1 (ID=1000)

Пост10 (ID=1010)

 

Форум2

Тема1 (ID=10)

Пост11 (ID=1010)

Пост12 (ID=1012)

 

Ведь в итоговый форум должно попасть всё!

Форум

Тема1 (ID=10)

Пост1 (ID=1000)

Пост10 (ID=1010)

Пост11 (ID=1010)

Пост12 (ID=1012)

Поделиться сообщением


Ссылка на сообщение

Ид которые пересекаются и имеют имеют одинаковые значения

Те которые пересекаются и имеют одинаковые значения удаляются примерно таким sql запросам

 

DELETE m2.*, pp2.*, pc2.* 
FROM db2.ibf_members m2 
INNER JOIN db.ibf_members m ON (m.member_id=m2.member_id AND m.name=m2.name) 
LEFT JOIN db2.ibf_profile_portal pp2 ON (pp2.pp_member_id=m2.member_id) 
LEFT JOIN db2.ibf_pfields_content pc2 ON (pc2.member_id=m2.member_id)

db - имя базы данных с которой идет сравнение

db2 - имя бд откуда будут удаляться данные.

ibf_ - префикс таблиц.

 

Перед удалением, желательно DELETE заменить на SELECT и проверить какие данные будут удаляться.

Поделиться сообщением


Ссылка на сообщение

Спасибо, но вчера при попытке объединения через Merge Tool получил на выходе полное дублирование всех форумов, хотя они и имели полностью идентичные значения по ID и по названию...

Объединять уже доступными утилитами для объединения двух разных форумов. 

Извините, но всё равно не понял как эта утилита сможет объединить следующее (все посты уникальные):

 

Форум1

Тема1 (ID=10)

Пост1 (ID=1000)

Пост10 (ID=1010)

 

Форум2

Тема1 (ID=10)

Пост11 (ID=1010)

Пост12 (ID=1012)

 

Ведь в итоговый форум должно попасть всё!

Форум

Тема1 (ID=10)

Пост1 (ID=1000)

Пост10 (ID=1010)

Пост11 (ID=1020 - уже с новым ID видимо)

Пост12 (ID=1022 - уже с новым ID видимо)

Поделиться сообщением


Ссылка на сообщение

Спасибо, но вчера при попытке объединения через Merge Tool получил на выходе полное дублирование всех форумов, хотя они и имели полностью идентичные значения по ID и по названию...

Поэтому их предварительно нужно удалить.

 

Извините, но всё равно не понял как эта утилита сможет объединить следующее:

Форум 1

Тема1 - 1

Тема2 - 2

Тема3 - 3

 

Форум 2

Тема1 - 1

Тема5 - 2

Тема6 - 3

 

----

Итоговой форум

Тема1 - 1 (Форум 2.Тема1 предварительно нужно удалить)

Тема2 - 2

Тема3 - 3

Тема5 - 4

Тема6 - 5

Поделиться сообщением


Ссылка на сообщение

Хорошо, если опираться на ваш пример, то удалить просто так Тему1 из Форума1 я не могу, т.к. в ней частично есть нужные посты (

Поэтому и пишу, что то же самое похоже придется делать уже на уровне постов, а не только Тем... (

Поделиться сообщением


Ссылка на сообщение
Поэтому и пишу, что то же самое похоже придется делать уже на уровне постов, а не только Тем... (

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

 

Можно также тупо объединить, потом удалить дублирующиеся значения SQL запросами.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...