Skip to content

Доступные команды

Anatoly Erofeev edited this page May 22, 2023 · 8 revisions

Основные команды для работы с модулем

Для работы с модулем необходимо подключиться к модулю по ssh к серверу и перейти в папку «корень_сайта/local/modules/intervolga.migrato/tools».

Для миграции данных существуют 4 команды:

  • validate - валидация данных;
  • autofix - автоисправление ошибок невалидности внешнего ключа;
  • export - экспорт данных из бд в xml файлы;
  • import - импорт данных из xml файлов в бд.
  • importxmlid - импорт одной записи из xml файлов в бд.

После выполнения команды отобразиться отчет о выполнении. Возможны 3 вида отчета: краткий, подробный и очень подробный. Для управление видом отчета необходимо дописать флаг соотвественно: "-v", "-vv", "-vvv".

В случае возникновения ошибок можно их посмотреть в таблице intervolga.migrato, либо с помощью команды «log [--fails|-F]».

php run.php log -F

Особенность с кодировкой

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

флаг = [--win|-W] - Если на сервере UTF-8, а на клиенте WINDOWS-1251.

флаг = [--utf|-U] - Если на сервере WINDOWS-1251, а на клиенте UTF-8.

Подробнее о каждой команде.

validate

Данная команда проверяет внешний ключ каждой записи:

  • внешний ключ обязательно должен быть;
  • внешний ключ должен состоять из цифр, букв латинского алфавита нижнего регистра [a-z] и знаков "_", "#", ".";
  • внешний ключ не должен являться числом;
  • внешний ключ не должен повторяться.

php run.php validate -F

Выводит таблицу ошибок со столбцами:

  • Дата и время ошибки
  • Контекст ошибки (в виде модуль:сущность, например main:event или iblock:iblock)
  • Xml Id записи -- уникальный код, который модуль migrato использует для сопоставления записей при экспорте и импорте данных. У каждой сущности этот код вычисляется по разному. У одних это буквально XML_ID, у других -- символьный код, у третьих это контрольная сумма от нескольких контрольных полей. Подробнее можно увидеть в классе сущности в модуле миграции
  • Id записи -- настоящий ID записи в БД. На него можно опираться при диагностике ошибок
  • Название операции
  • Описание проблемы. Если "Вычислен повторяющийся" -- значит где-то в БД есть еще одна запись с другим ID но таким же Xml Id

autofix

Внешний ключ генерируется по формату «наименование модуля-сокращенное наименование сущности-случайное число».

Случайное число генерируется функцией uniqid(), далее в нем удаляются точки и оно разбивается по 6 символов разделяемых знаком "-".

php run.php autofix -v

export

Генерирует для каждой записи в базе данных xml файл на основе конфигурационного файла.

В случае ошибки валидации при запущенном процессе экспорта, он прекратит своё выполнение.

php run.php export -v

import

Импортирует все данные из xml файлов, включенных в импорт в конфигурационном файле, находящихся по пути «корень_сайта/local/migrato/»

php run.php import -v

--force

По умолчанию модуль запрещает импорт, если нет свежего полного бекапа сайта (в течение последних 2-ух часов). С помощью флага --force эту проверку можно обойти

--safe-delete

По умолчанию модуль удаляет при импорте такие записи, для которых нет XML-файлов. С помощью флага --safe-delete можно отключить такое удаление.

--quick

По умолчанию модуль производит сброс кеша, обновление правил обработки адресов (urlrewrite.php), переиндексацию поиска и фасетного индекса. С помощью флага --quick можно пропустить эти действия

importxmlid

Импортирует одну запись из файла в БД. Зависимости должны быть разрешены перед вызовом команды вручную.

php run.php importxmlid <module> <data> <xmlid>

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

generate

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

  • STRING_BOOL - генерирует значение вида Y или N.
  • STRING0_<N> - генерирует N случайных символов.
  • TEXT0_<N> - генерирует N случайных символов и разделяет их на слова от трех до девяти символов.
  • NUMBER0_<N> - генерирует случайное число от 0 до N.
  • BOOL - генерирует случайное булево число.
  • FROM_LIST - выбирает случайное значение из переданного методу списка.

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

php run.php generate -v

unittest

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

Проверяет по следующему алгоритму:

  1. Автоисправление ошибок.
  2. Экспорт данных с сайта.
  3. Экспорт опций с сайта.
  4. Копирование xml файлов, которые были сгенерированны в папку с постфиксом «_pld».
  5. Импорт данных на сайт.
  6. Импорт опций на сайт.
  7. Повторный экспорт данных с сайта.
  8. Повторный экспорт опций с сайта.
  9. Сравнение папок с xml файлами.

Сравнение выполняется с помощью утилиты diff. Отчет, если есть какие-то отличия, генерируется по пути «корень_сайта/local/migrato_old/report_<currentDateTime>.txt».

php run.php unittest -v