Добрый день.
Намечается одна задачка - импортировать в словари таксономии Drupal 8 произвольные данные, которые могут быть в формате xls или csv.
Причем, миграцию нужно будет делать не "один к одному", а при этом выполнять некоторые действия. Например, где-то объединять значения ячеек, где-то как-то модифицировать данные, где-то при формировании записи в одном словаре брать информацию из нескольких исходных таблиц, далее как-то её обрабатывать и т. д.
Так получилось, что опыта импорта данных в Drupal 8, да еще и с их предварительной обработкой, у меня нет.
Поделитесь, пожалуйста, опытом, какое решение в данном случае наиболее приспособлено для этого, чтобы можно было относительно быстро разобраться с тем, как написать под него модуль (или плагин), а также, которое бы имело возможность в случае чего отката неудачной миграции.
Есть Feeds, есть Migrate (входит в состав экспериментальных модулей). Может, есть еще что-то ?
Чем вы пользуетесь в таких случаях ?
Ответы
для общего понимания migrate
У меня примерно так было .
есть запрос к таблице с выборкой всей таблицы, где есть id
как бы получается массив со значениями, ид, дата, автор и тп, что соберете одним запросом.
в function prepareRow(Row $row) делается запрос в котором формируете содержимое поля, где
$id = $row->getSourceProperty('id');
далее добавляете это значение в то что сделано первым запросом:
$row->setSourceProperty('field_MYFIELS', ЗНАЧЕНИЕ);
например можно собрать термины в один массив либо скачать изображение, добавить файл в друпал и передать fid
вот так. пример хороший - модуль d8_migrate_wordpress
Мы всё через feeds импортируем, модуль прекрасно работает и периодически обновлется.
Для каждого своего формата пишешь отдельный парсер и радуешься.
Под версию 8 тоже Feeds пользуетесь ?
Ответить не могу, но с удовольствием послушаю. Была подобная задача (вкачать kml файл от гугл мапс), долго изучал migrate, потом feeds, в какой-то момент времени понял, что за потраченное (без видимого результата) время уже раза два бы все вбил руками, так в результате и сделал ;)
Я сейчас изучаю эту тему и прихожу к выводу, что нужно использовать migrate c дополнительными модулями.
Правда, всё это довольно тяжело для понимания.
Feeds, как я понял, не развивают для Drupal 8. Если для Drupal 7 есть куча доп. модулей для Feeds, то для D8 их нет.
Я уже об этом написал, на Feeds, похоже, забили в версии 8.
А вот Migrate развивается, у него есть зависимые модули, есть примеры миграции и т.д.
Пробовала через миграцию,вылазит ошибка SQLSTATE[HY000] [1045] Access denied for user
Юлия, я вчера разбирался с миграцией.
Все-таки это делается через Migrate, вот, у них целая глава в документации этому посвящена
https://www.drupal.org/docs/8/api/migrate-api
Там, в принципе, можно мигрировать данные откуда угодно через написание своих плагинов.