Я выполняю миграцию с сайта, отличного от Drupal, пока в целях тестирования.
У меня есть все данные в файлах CSV.
Поскольку я новичок в переходе на Drupal 9 из-за пределов Drupal, я изучаю это небольшими, несколько простыми этапами.
Исходные данные включают в себя кучу записей, многие из которых имеют вложенные файлы.
Некоторые файлы прикреплены более чем к одной записи.
К некоторым записям прикреплено несколько файлов.
«Прикрепленный» здесь означает, что URL-адрес хранится вместе с небольшим количеством метаданных, таких как краткое описание и тип. В базе данных это таблица соединений, чтобы связать файлы с записями.
Чего я хочу добиться в итоге в Drupal:
Все эти записи перенесены в виде узлов, файлы присоединены к носителям, а файлы присоединены к правильным узлам по ссылке на сущность. Созданные объекты мультимедиа должны иметь старые метаданные (описание, тип) в настраиваемых полях.
Я понимаю, что это должно быть сделано следующим образом:
- Перенос файлов в файловые сущности
- Используя группу миграции (модули migrate_plus, migrate_tools и migrate_source_csv), используйте тот же источник данных и migration_lookup для переноса медиаобъектов
- Перенесите узлы и используйте плагин процесса entity_generate и value_key целевого идентификатора или что-то еще, чтобы связать узлы с правильными медиаобъектами.
Файлы уже находятся там, где они должны быть на сервере, а пути/URI хранятся в CSV-файле вместе с описанием и типом, уникальным полем идентификатора и идентификатором каждой связанной записи.
В качестве отправной точки я попытался импортировать 30 файлов как отдельный импорт. Модуль migrate_files не показался мне подходящим, в основном потому, что я не могу понять, как адаптировать его к ситуации, когда объекты мультимедиа собираются извлекать данные поля из csv... и файлы uri хранятся в CSV также.
Поэтому я подумал, что попробую его в основном со стандартом.
Это был мой ямл:
UUID: 1bcec3e7-0a49-4473-87a2-6dca09b91abjan-test1
идентификатор: fileimptest
label: Импорт тестового файла
миграция_группа: по умолчанию
источник:
плагин: 'CSV'
путь: '/srv/imports/filetest1.tab'
разделитель: "\т"
вложение: '"'
header_offset: ноль
идентификаторы: [помощь]
# не использовать большинство этих полей при импорте файла
# но в том числе, потому что может понадобиться для группировки
# и migrate_lookup в импорте медиа?
поля:
0:
имя: помощь
label: 'Уникальный идентификатор'
1:
имя: титул
метка: 'описание'
2:
имя: formflag
метка: 'FormYN'
3:
имя: новый путь
метка: 'путь'
4:
имя: документ
метка: 'номер документа'
5:
имя: тип документа
метка: 'тип документа'
процесс:
ИД:
плагин: default_value
значение_по умолчанию: 179
ури: путь
пункт назначения:
плагин: сущность:файл
В результате мои 30 тестовых файлов появились в списке файлов в разделе admin/conent со статусом временных. Ссылки выглядят правильно, но нажатие на них приводит к отказу в доступе 403 (права доступа к папке 777 и принадлежат веб-серверу).(Я использую частную файловую систему, и у меня есть несколько файлов, загруженных через обычные виджеты поля: этот список со статусом «постоянный». Ссылки выглядят одинаково, за исключением подкаталогов, но нормально открываются при нажатии.)
Итак, вопросы:
- Что я делаю неправильно до сих пор?
- Есть ли способ лучше? (Я почти уверен, что есть, но что?)
(Подробности: uid 179 — это просто созданный мной пользователь с именем «импортер»)
Я должен отметить, что я прочитал это и этои множество примеров в соответствующих модулях. Вместе они сообщили мне о том, к чему я пришла, насколько я их понимаю.)
Редактировать: «временный статус» просто означает, что пока нет применений, поэтому на данный момент это не важно.
Единственное, что кажется неправильным в этом тестовом импорте, — это проблема с отказом в доступе. В процессе миграции не хватает чего-то необходимого для полноценной работы частной файловой системы?
Может быть, при использовании личных файлов их можно просматривать только в том случае, если они «используются» на другом объекте? Я еще не нашел информации об этом и не придумал способ проверить это.
Edit2: за комментарии и ответ ниже, «временный» статус может быть установлен программно во время импорта, и отказ в доступе является нормальным в этих условиях.: когда импортированный файл а) нигде не используется и б) щелкнут пользователем, отличным от идентификатора uid в файле.