Вы здесь

Какой оптимальный способ импорта произвольных данных в Drupal 8 ?

0

Добрый день.

Намечается одна задачка - импортировать в словари таксономии Drupal 8 произвольные данные, которые могут быть в формате xls или csv.

Причем, миграцию нужно будет делать не "один к одному", а при этом выполнять некоторые действия. Например, где-то объединять значения ячеек, где-то как-то модифицировать данные, где-то при формировании записи в одном словаре брать информацию из нескольких исходных таблиц, далее как-то её обрабатывать и т. д.

Так получилось, что опыта импорта данных в Drupal 8, да еще и с их предварительной обработкой, у меня нет.

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

Есть Feeds, есть Migrate (входит в состав экспериментальных модулей). Может, есть еще что-то ?

Чем вы пользуетесь в таких случаях ?

Версия Drupal: 
8.x
Категория: 
Import
Связанные проекты: 
MigrateFeeds
Вопрос задан 07.02.2017 - 19:08

Ответить не могу, но с удовольствием послушаю. Была подобная задача (вкачать kml файл от гугл мапс), долго изучал migrate, потом feeds, в какой-то момент времени понял, что за потраченное (без видимого результата) время уже раза два бы все вбил руками, так в результате и сделал ;)

Комментарий оставлен 07.02.2017 - 21:15

Я сейчас изучаю эту тему и прихожу к выводу, что нужно использовать migrate c дополнительными модулями.
Правда, всё это довольно тяжело для понимания.
Feeds, как я понял, не развивают для Drupal 8. Если для Drupal 7 есть куча доп. модулей для Feeds, то для D8 их нет.

Комментарий оставлен 07.02.2017 - 21:43

Я уже об этом написал, на Feeds, похоже, забили в версии 8.
А вот Migrate развивается, у него есть зависимые модули, есть примеры миграции и т.д.

Комментарий оставлен 08.02.2017 - 10:52

Пробовала через миграцию,вылазит ошибка SQLSTATE[HY000] [1045] Access denied for user

Комментарий оставлен 09.02.2017 - 09:39

Юлия, я вчера разбирался с миграцией.
Все-таки это делается через Migrate, вот, у них целая глава в документации этому посвящена
https://www.drupal.org/docs/8/api/migrate-api
Там, в принципе, можно мигрировать данные откуда угодно через написание своих плагинов.

Комментарий оставлен 09.02.2017 - 10:46

Ответы

1

для общего понимания migrate
У меня примерно так было .
есть запрос к таблице с выборкой всей таблицы, где есть id
как бы получается массив со значениями, ид, дата, автор и тп, что соберете одним запросом.
в function prepareRow(Row $row) делается запрос в котором формируете содержимое поля, где
$id = $row->getSourceProperty('id');
далее добавляете это значение в то что сделано первым запросом:
$row->setSourceProperty('field_MYFIELS', ЗНАЧЕНИЕ);
например можно собрать термины в один массив либо скачать изображение, добавить файл в друпал и передать fid
вот так. пример хороший - модуль d8_migrate_wordpress

Ответ дан 09.02.2017 - 22:58
0

Мы всё через feeds импортируем, модуль прекрасно работает и периодически обновлется.
Для каждого своего формата пишешь отдельный парсер и радуешься.

Ответ дан 17.02.2017 - 18:15