Запрограммировать импорт в Эгею

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

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

Предположим, у нас есть блог, в котором с 100 заметок и 10 тегов, между которыми установлено 200 связей (у каких-то заметок несколько тегов), а в дампе есть такие записи:

Заметка № 1 «Привет»
Заметка № 2 «Пока»
Тег № 1 «кино»
Тег № 2 «музыка»
Связь № 1: У заметки № 1 есть тег № 1
Связь № 2: У заметки № 1 есть тег № 2
Связь № 3: У заметки № 2 есть тег № 2

Тогда после импорта в базу должны добавиться такие записи:

Заметка № 101 «Привет»
Заметка № 102 «Пока»
Тег № 11 «кино»
Тег № 12 «музыка»
Связь № 201: У заметки № 101 есть тег № 11
Связь № 202: У заметки № 101 есть тег № 12
Связь № 203: У заметки № 102 есть тег № 12

Но в существующей базе могут уже и так быть теги № 5 «кино» и № 8 «музыка». И тогда в результате добавятся только такие записи:

Заметка № 101 «Привет»
Заметка № 102 «Пока»
Связь № 201: У заметки № 101 есть тег № 5
Связь № 202: У заметки № 101 есть тег № 8
Связь № 203: У заметки № 102 есть тег № 8

Получается, код должен поддерживать «переиспользование» существующих тегов с тем же именем. Но это должно быть опционально — иногда нужно по-другому. Есть ещё несколько подобных нюансов, например у добавляемых сущностей с существующими могут конфликтовать урлы. Возможно, более правильным решением будет вообще не писать ничего напрямую в базу данных, а создавать все сущности через более высокоуровневый интерфейс — обсудим, глядя вместе на код и структуру данных.

Ну и надо учитывать, что импорт может «не успеть» случиться за отведённое скрипту время, и тогда важно корректно доделать именно оставшуюся работу, а не дублировать записи до бесконечности.

Разумеется, надо на ПХП.

Если вы хотите, напишите мне: ilyabirman@ilyabirman.ru

Подписаться на блог
Отправить
Запинить
Дальше
Мои книги