Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Но вот беда случилась, и бекап есть. Но все заливать не требуется, например похерились только определенные свойства элементов, или какая-то категория товаров. Как быть?
Прежде всего загружаете старый бекап по соседству с боевым, чтобы боевой сайт мог к нему подконнектиться. И приступаем к написанию кода перегонки данных. Каждый раз подход индивидуальный. Но вот вы накидали алгоритм по выборке данных из "старого Битрикс" и загона его в новый. Мне тут проще было оперировать запросами, поэтому пример будет с ними.
Все волшебство сводится к волшебной команде use, которую применяем два раза - при коннекте к старой базе и потом к новой.
Получается как-то так:
Повторю, скрипт не для боевого применения, а лишь как иллюстрация действий. Ну и стиль кодирования, именования и прочего не для применения, а так как надо было ASAP.
Назад в раздел
то ждем ваше обращение в нашей службе тех поддержки.
Как точечно восстановить бекап БД сайта
Делайте бекап БД, всегда делайте. Даже когда кажется, что все замечудненько, попадется модуль, который все испортит.Но вот беда случилась, и бекап есть. Но все заливать не требуется, например похерились только определенные свойства элементов, или какая-то категория товаров. Как быть?
Прежде всего загружаете старый бекап по соседству с боевым, чтобы боевой сайт мог к нему подконнектиться. И приступаем к написанию кода перегонки данных. Каждый раз подход индивидуальный. Но вот вы накидали алгоритм по выборке данных из "старого Битрикс" и загона его в новый. Мне тут проще было оперировать запросами, поэтому пример будет с ними.
Все волшебство сводится к волшебной команде use, которую применяем два раза - при коннекте к старой базе и потом к новой.
Получается как-то так:
$arAll = array(); //коннектимся к старой базе, забираем данные так, как-будто они находятся в текущем Битрикс $DB->Query('use db1507;'); $rs = $DB->Query('SEL ECT * FR OM `b_iblock_element_property` WHERE `IBLOCK_PROPERTY_ID`=455;'); while ($ar = $rs->Fetch()) { $arAll[] = $ar;//подразумеваем, что массив данных вместится в один заход } //возвращаемся к старой (боевой) базе $DB->Query('use db;'); foreach ($arAll as $ar) { //аккуратно инсертим $DB->Query('UPD ATE `b_iblock_element_property` SE T `VALUE`='.$ar['VALUE'].', `VALUE_ENUM`='.$ar['VALUE_ENUM'].' WHERE `ID`='.$ar['ID'].';'); break;//при первом заходе вставляем break и проверяем правильно ли отработало, иначе винегрет еще сложнее разгребать :) } |
Повторю, скрипт не для боевого применения, а лишь как иллюстрация действий. Ну и стиль кодирования, именования и прочего не для применения, а так как надо было ASAP.
Назад в раздел
Подписаться на новые материалы раздела: