Как подставить файл-источник при запуске миграции из CSV файла

При работе с migration API в друпал, в документации предполагается, что вы задаёте файл в секции source как значение path. (Подразумевается, что вы используете модуль migrate_source_csv).

Хотелось бы делать это через интерфейс, а не конфигурационные файлы. Т.е. идеальный процесс такой, что пользователь выбирает файл через форму миграции, запускается процесс миграции и пользователь видит этот процесс как стандартную batch — обработка в Drupal (аналогично тому как, например, выглядит загрузка переводов при установке модуля).

Всё это можно устроить и делается небольшими усилиями, т.к. batch процесс уже является частью миграции, а сами миграции — это расширение над ConfigEntityBase и работать с ними довольно легко из кода.

Cоздадим форму /src/Form/MigrationCSV.php, которая позволит выбрать файл и запустить миграцию данных из CSV файла.

Я сразу привел весь код файла, т.к. форма очень проста и единственное интересное место — это то, так подставить файл, указанный пользователем в конфигурацию миграции.

MIGRATION_ID — это машинное имя вашей миграции. Если миграция происходит в несколько этапов (есть дочерние миграции), то файл нужно подставить во все конфигурации миграции, использующие его.

Т.к. миграция происходит в виде batch процесса, то CSV файл нужно где то сохранить. Функция file_save_upload позволяет переместить файл в public папку, при этом он получает статус temporary (временный). Нам этого достаточно, чтобы успешно прошла миграция. А через несколько часов (обычно 8 часов) файл будет удален сборщиком мусора Drupal.

Написать комментарий

Мало букафф? Читайте есчо !

Чем заменить drupal_mkdir() в Drupal 10

Февраль 22, 2024 г.

В Drupal 10 множество функций работы с файловой системой было собрано в сервис file_system. В том числе и drupal_mkdir была перенесена туда. В общем случае это выглядит для D10 вот так: [crayon-662ebc029c405180334607/]

Читать

Создание параграфов из CSV файла

Февраль 27, 2024 г.

Параграфы, оторванные от родительской entity нам не нужны, потому эта миграция является дочерней к рассматриваемому примеру миграции статей блога из CSV. Из всего набора полей источника нам требуется только два поля - это id и body. migrate_plus.migration.custom_text_to_paragraph.yml ...

Читать

 

Комментарии к «Как подставить файл-источник при запуске миграции из CSV файла»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: