Skip to Content

Слияние нескольких баз MySQL с одинаковыми таблицами и id

10 всего / 0 новых
Последнее
FaSTeR
Молчун
FaSTeR аватар
Сообщения: 7
Бонусы: 11
Пол: Мужской
Группы: Нет
Блог: читать!
Слияние нескольких баз MySQL с одинаковыми таблицами и id

Здравствуйте форумчане. Пришел к вам с проблемой.
Начну сначала....

Год назад была задумка сделать несколько каталогов фирм на движке вордпресс, в каждом по 2000-3000 страниц. Каждый каталог имеет свой движок и базу. По неопытности префиксы у баз не менял и сделал одинаковыми. Теперь имею 9 сайтов в каждом по 2000-3000 страниц, и соответственно 9 баз и 9 движков вордпресс...
Все каталоги перенес на 1 домен, но расположил их не на поддоменах а в папках в корне сайта, то есть получилось каждый большой раздел сайта имеет свой движок и свою базу.

Все это дело на хостинге весит ппц как много, так как только 1 движок вордпресс около 15 метров... Но даже дело не в размере. Чтоб изменить что либо на всех сайтах мне нужно менять в 9 разных местах Happy Если продавать ссылки на биржах - тоже фигня получается, так как продавать могу только на том сайте который расположен в корне домена, а на остальных восьми уже не получается Happy
Лан хватит мне плакаться Happy Думаю суть моей проблемы вы поняли.
Теперь вопрос: Каким образом можно объединить все базы в одну, чтоб не пострадала инфа, адреса страниц, метки и тд?...

__________________

Есть только миг между прошлым и будущим, именно он называется ПИНГ.

Сандер
Администратор
Сандер аватар
ГуруМодератор
Сообщения: 1944
Бонусы: 617
Пол: Мужской
Блог: читать!

FaSTeR, хороший вопрос.
Думаю, задача так просто не решается. И, во всяком случае, требует хорошего понимания структуры Wordpress.
Вы смотрите, в чем дело. В MySQL записи в таблицах нумеруются. То есть, допустим, идут статьи с номерами 1,2,3, ... И везде в других местах (например, в таблице комментариев) идет ссылка на этот номер. Поэтому прямо так взять и объединить таблицы нельзя - индексы не могут повторяться. Объединять надо грамотно - во второй базе делать прибавление к начальному индексу. Но тогда и в таблицах комментариев нужно правильно заменить ссылку на этот индекс.
В общем, это работа. Если, конечно, нет готовых утилит

FaSTeR
Молчун
FaSTeR аватар
Сообщения: 7
Бонусы: 11
Пол: Мужской
Группы: Нет
Блог: читать!

В этом то и проблема что префексы у всех таблиц одинаковые, и соответственно ID тоже Happy объединить просто так не получится...

Собственно и нужно какое то решение, может быть утилита, или запрос к БД какой сделать...

Я вот вижу например несколько путей решения данной проблемы:

  1. 1 способ сделать запрос к БД чтоб все ID получили прибавку например 5000. например был ID-1 стал 5001, был ID-102 стад 5102. Надеюсь вы поняли про что я. На второй сайт мона сделать прибавку 10000, на третий 15000 и тд... тогда ID станут везде уникальными. Но проблема в том что я не программист, и не знаю какой запрос сделать к БД Happy
  2. 2 способ сделать запрос к БД чтоб изменить префикс у таблицы, в этом случае я думаю я смогу объединить базы, но не уверен на 100%, и не знаю что произойдет с ID.
  3. 3 способ каким то волшебным образом спарсить эти сайты в xml формат и экспортировать в нужную базу... или сразу спарсить напрямую в базу... Но это я вообще не представляю как сделать, так как нужно перенести не только тексты, но и комментарии, метки, рубрики и тд...

Посему я больше склоняюсь к первому способу.. думаю что такой запрос должен существовать...
Поэтому я и пишу ВАМ программистам, возможно вы знаете такой запрос, или подскажите более простой путь решения данной проблемы Happy

__________________

Есть только миг между прошлым и будущим, именно он называется ПИНГ.

BOLVERIN
Разговорчивый
Сообщения: 20
Бонусы: 18
Пол: Мужской
Группы: Нет
Блог: читать!

т.е. вы хотите слить все в кучу? сделать из 9 разных сайтов 1?
по сути задача не сложная:
получить дамп базы,
глянуть категории, сравнить с теми что есть. запомнить новые id.
проделать тоже самое с тегами
добавить все посты без указания id и сохранить как старый id так и новый (лучше заюзать отдельную табличку)
прописать теги и категории в новой бд на основе ранее полученных данных
добавить комментарии почти тем же макаром что и статьи

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

Сандер
Администратор
Сандер аватар
ГуруМодератор
Сообщения: 1944
Бонусы: 617
Пол: Мужской
Блог: читать!

2 способ, боюсь, не сработает - все-таки одня копия WP расчитана на один префикс таблиц. Базы с разными префиксами слить получится, но WP все равно 8 раз ставить.
Первый спобоб - да, это, в общем, и есть то направление, о котором я говорил.
Теоретически можно даже сделать выгрузку базы и в файле выгрузки сделать соответствующие замены. Но главная проблема - в том, что нужно знать, где заменять. А для этого нужно знать не только программирование, но и структуру баз Wordpress. Я вот, например, знаю ее крайне плохо.
В предыдущем посте Bolverin предложил сделать за деньги скрипт. Я думаю, это - более чем адекватная цена за такую работу.

BOLVERIN
Разговорчивый
Сообщения: 20
Бонусы: 18
Пол: Мужской
Группы: Нет
Блог: читать!

Сообщение от Admin:
2 способ, боюсь, не сработает - все-таки одня копия WP расчитана на один префикс таблиц.

можно сделать 8 конфигов и в зависимости от того к корневому сайту или к каталогу\субдомену обращается пользователь вызывать определенный конфиг. таким образом будем использовать 1 движок для 8 сайтов

FaSTeR
Молчун
FaSTeR аватар
Сообщения: 7
Бонусы: 11
Пол: Мужской
Группы: Нет
Блог: читать!

да даже конфиги делать в принципе не нужно. Смысл в том что вордпресс стал мультисайтовым, и на 1 движке можно разместить хоть мильон сайтов (ну к каждому сайту своя база соответственно), то есть это я сделать могу даже ничего не изменяя.

Но мне нужно чтоб была 1 админка у всех сайтов, и чтоб можно было использовать плагины, скрипты и тд сразу на всех сайтах: например поиск по сайту и тд.
Чтоб это сделать нужно чтобы все базы слились в одну...
По поводу поста BOLVERIN - категории сравнивать не нужно, они все разные, посты также не повторяются, единственное что повторяется это метки, но в принципе фиг на них...
Адреса постов и категорий имеют вид ЧПУ (тупо название поста транслитом), поэтому их перенос не вызовет проблем.
Посему до сих пор склоняюсь к мнению что есть какой то запрос к БД чтоб можно было увеличить все id на определенное количество, а после этого просто импортировать базы через встроенный xml вордпресса. Увеличение id нужно чтоб сохранить связи в таблицах, а все остальное не проблема.

__________________

Есть только миг между прошлым и будущим, именно он называется ПИНГ.

Сандер
Администратор
Сандер аватар
ГуруМодератор
Сообщения: 1944
Бонусы: 617
Пол: Мужской
Блог: читать!

Но увеличить ID в каких таблицах? Во всех? Все ID? Как вы поймете, где ID, а где нет? В случае с primary id это понятно, но чтобы сохранить связи, нужно увеличить этот ID и во всех таблицах, ссылающихся на эту. Вы знаете, которые таблицы ссылаются на которые? Я лично нет.

Что касается запроса, который вы ищете, думаю, речь идет о
UPDATE TableName
SET ID = ID + 5000

BOLVERIN
Разговорчивый
Сообщения: 20
Бонусы: 18
Пол: Мужской
Группы: Нет
Блог: читать!

Сообщение от FaSTeR:

Чтоб это сделать нужно чтобы все базы слились в одну...

и получится один сайт

FaSTeR
Молчун
FaSTeR аватар
Сообщения: 7
Бонусы: 11
Пол: Мужской
Группы: Нет
Блог: читать!

Сообщение от Admin:
Но увеличить ID в каких таблицах? Во всех? Все ID? Как вы поймете, где ID, а где нет? В случае с primary id это понятно, но чтобы сохранить связи, нужно увеличить этот ID и во всех таблицах, ссылающихся на эту. Вы знаете, которые таблицы ссылаются на которые? Я лично нет.

Что касается запроса, который вы ищете, думаю, речь идет о
UPDATE TableName
SET ID = ID + 5000


огромное спасибо, попробую

RSS-материал


Активные пользователи

ПользовательБонусы
Сандер617
Nefertity247
Tori242
robot201
Chief183
STAER140
faiters139
Mavarik121
akkadites94
staiki94