Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Migrate API Drupal 7/8 1
Майхер Володимир
EPAM Systems
Модуль migrate
2
Переваги модуля migrate:
• Будь-яке джерело даних (SQL, XML, JSON, CSV)
• Можливість корегувати дані при міграції
• Можлив...
Архітектура модуля migrate:
• MigrateSource
• MigrateDestination
• MigrateMap
• MigrateFieldMapping
4
Архітектура модуля migrate:
5
Запуск міграції:
6
Migrate в Drupal 7
• Migrate_ui
• drush
7
migrate_ui
8
migrate_ui
migrate_ui 9
migrate_ui 10
migrate_ui 11
drush команди
drush migrate-fields-destination (mfd)
drush migrate-fields-source (mfs)
drush migrate-import (mi)
drush mig...
drush опції
--all
--idlist
--instrument
--limit
--stop
--update
13
Приклади використання з drush
• drush migrate-import BrandTerm – виконання міграції з машинною назвою “BrandTerm”
• drush ...
Як створити міграцію? 15
galauto_migrate.module
galauto_migrate.migrate.inc
У файлі galauto_migrate.info
вказуємо звичну і...
Як створити міграцію? 16
brand.inc
<?php
class BrandTermMigration extends Migration {
public function __construct() {
pare...
Як створити міграцію? 17
brand.inc Source об`єкт
$query = db_select('car_mark', 'mark')
->fields('mark', array('id_car_mar...
Як створити міграцію? 18
brand.inc Source об`єкт
Source класи: • MigrateSourceSQL
• MigrateSourceList
• MigrateSourceMulti...
Як створити міграцію? 19
brand.inc Destination об`єкт
Destination класи: • MigrateDestinationRole
• MigrateDestinationUser...
Як створити міграцію? 20
brand.inc Об`єкт мапінгу
Клас мапінгу: • MigrateSQLMap
$source_key_schema = array(
'id_car_mark' ...
Як створити міграцію? 21
brand.inc Мапінг полів
$this->addFieldMapping('name', 'name')
->description(t('The incoming name(...
Як створити міграцію?
<?php
class BrandMigration extends Migration {
public function __construct() {
parent::__construct()...
Додаткові методи 23
brand.inc
• function prepareRow($row)
• function prepare($entity, stdClass $row)
• function complete($...
Migrate в Drupal 8 24
• Migrate
• Migrate Drupal
25
Міграція в ядрі
• Для міграції Drupal 6 → Drupal 8 можна використати модуль upgrade або drush
• для інших лише drush
26
Як запустити мігра...
Містить плагіни для міграції основних компонентів Drupal 6/7, таких як, контент типи,
поля, користувачі, ноди, таксономія ...
Для написання міграції обов`язково створити файли:
28
Migrating from Drupal 7
Migrating from Drupal 7 29
migrate.migration.custom_user.yml
Migrating from Drupal 7 30
User.php
Migrating from Drupal 7 31
manifest.yml
Для запуску міграції в консолі пишемо:
drush migrate-manifest <manifest-name> --le...
32
Запитання?
Дякую за увагу 
Skype: vmaikher
Email:
Volodymyr_Maykher@epam.com
33
Upcoming SlideShare
Loading in …5
×

Migrate api drupal 7&8

728 views

Published on

Overview of Migrate API on Drupal 7/8

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Migrate api drupal 7&8

  1. 1. Migrate API Drupal 7/8 1 Майхер Володимир EPAM Systems
  2. 2. Модуль migrate 2
  3. 3. Переваги модуля migrate: • Будь-яке джерело даних (SQL, XML, JSON, CSV) • Можливість корегувати дані при міграції • Можливість зробити rollback після імпорту • Статистика по кожній міграції • Можливість вказувати залежність міграцій одна від одної • Інтеграція з drush • Міграція підчас інсталяції 3
  4. 4. Архітектура модуля migrate: • MigrateSource • MigrateDestination • MigrateMap • MigrateFieldMapping 4
  5. 5. Архітектура модуля migrate: 5
  6. 6. Запуск міграції: 6 Migrate в Drupal 7 • Migrate_ui • drush
  7. 7. 7 migrate_ui
  8. 8. 8 migrate_ui
  9. 9. migrate_ui 9
  10. 10. migrate_ui 10
  11. 11. migrate_ui 11
  12. 12. drush команди drush migrate-fields-destination (mfd) drush migrate-fields-source (mfs) drush migrate-import (mi) drush migrate-mappings (mm) drush migrate-messages (mmsg) drush migrate-reset-status (mrs) drush migrate-rollback (mr) drush migrate-status (ms) drush migrate-stop (mst) drush migrate-analyze (maz) drush migrate-audit (ma) drush migrate-register (mreg) drush migrate-deregister drush migrate-wipe (mw) 12
  13. 13. drush опції --all --idlist --instrument --limit --stop --update 13
  14. 14. Приклади використання з drush • drush migrate-import BrandTerm – виконання міграції з машинною назвою “BrandTerm” • drush migrate-import BrandTerm --update – імпортує нові елементи і оновлює існуючі • drush migrate-import BrandTerm --idlist=4,9 – імпорт двох окремих елементів з id = 4 та id = 9. Id беруться з таблиці мапінгу. Більше на https://www.drupal.org/node/1561820. 14
  15. 15. Як створити міграцію? 15 galauto_migrate.module galauto_migrate.migrate.inc У файлі galauto_migrate.info вказуємо звичну інформацію. <?php /** * @file * THIS SPACE INTENTIONALLY LEFT BLANK. */ <?php /** * Implements hook_migrate_api(). */ function galauto_migrate_migrate_api() { $api = array( 'api' => 2, 'migrations' => array( 'BrandTerm' => array('class_name' => 'BrandTermMigration'), ), ); return $api; }
  16. 16. Як створити міграцію? 16 brand.inc <?php class BrandTermMigration extends Migration { public function __construct() { parent::__construct(); Об`являємо клас
  17. 17. Як створити міграцію? 17 brand.inc Source об`єкт $query = db_select('car_mark', 'mark') ->fields('mark', array('id_car_mark', 'name')); $this->source = new MigrateSourceSQL($query);
  18. 18. Як створити міграцію? 18 brand.inc Source об`єкт Source класи: • MigrateSourceSQL • MigrateSourceList • MigrateSourceMultiitems • MigrateSourceXML • MigrateSourceCSV • MigrateSourceMSSQL • MigrateSourceOracle • MigrateSourceMongoDB • MigrateListJSON and MigrateItemJSON • MigrateListFile and MigrateItemFile
  19. 19. Як створити міграцію? 19 brand.inc Destination об`єкт Destination класи: • MigrateDestinationRole • MigrateDestinationUser • MigrateDestinationTerm • MigrateDestinationNode • MigrateDestinationComment • MigrateDestinationFile • MigrateDestinationNodeRevision • MigrateDestinationTable $this->destination = new MigrateDestinationTerm('brands');
  20. 20. Як створити міграцію? 20 brand.inc Об`єкт мапінгу Клас мапінгу: • MigrateSQLMap $source_key_schema = array( 'id_car_mark' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ) ); $this->map = new MigrateSQLMap($this->machineName, $source_key_schema, MigrateDestinationTerm::getKeySchema());
  21. 21. Як створити міграцію? 21 brand.inc Мапінг полів $this->addFieldMapping('name', 'name') ->description(t('The incoming name(source) field is the name of the term')); $this->addFieldMapping('format') ->issueGroup(t('DNM')); $this->addFieldMapping('weight') ->issueGroup(t('DNM'));
  22. 22. Як створити міграцію? <?php class BrandMigration extends Migration { public function __construct() { parent::__construct(); $this->description = t('Migrate car brands from the source database to taxonomy terms'); $source_key_schema = array( 'id_car_mark' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ) ); $this->map = new MigrateSQLMap($this->machineName, $source_key_schema, MigrateDestinationTerm::getKeySchema()); $query = db_select('car_mark', 'mark') ->fields('mark', array('id_car_mark', 'name')) $this->source = new MigrateSourceSQL($query); $this->destination = new MigrateDestinationTerm('brands'); $this->addFieldMapping('name', 'name') ->description(t('The incoming name(source) field is the name of the term parent')); $this->addFieldMapping('description') ->issueGroup(t('DNM')); } } 22 brand.inc
  23. 23. Додаткові методи 23 brand.inc • function prepareRow($row) • function prepare($entity, stdClass $row) • function complete($entity, stdClass $row)
  24. 24. Migrate в Drupal 8 24
  25. 25. • Migrate • Migrate Drupal 25 Міграція в ядрі
  26. 26. • Для міграції Drupal 6 → Drupal 8 можна використати модуль upgrade або drush • для інших лише drush 26 Як запустити міграцію?
  27. 27. Містить плагіни для міграції основних компонентів Drupal 6/7, таких як, контент типи, поля, користувачі, ноди, таксономія та інші. 27 Migrate Drupal Лише Drupal 6 на даний момент
  28. 28. Для написання міграції обов`язково створити файли: 28 Migrating from Drupal 7
  29. 29. Migrating from Drupal 7 29 migrate.migration.custom_user.yml
  30. 30. Migrating from Drupal 7 30 User.php
  31. 31. Migrating from Drupal 7 31 manifest.yml Для запуску міграції в консолі пишемо: drush migrate-manifest <manifest-name> --legacy-db-url=mysql://<username>:<password>@<host>:<portno>/<db_name> drush migrate-manifest manifest.yml --legacy-db-url=mysql://root:root@localhost/drupal7 Має знаходитись в корені Drupal - custom_user
  32. 32. 32 Запитання?
  33. 33. Дякую за увагу  Skype: vmaikher Email: Volodymyr_Maykher@epam.com 33

×