SlideShare a Scribd company logo
Модуль  MIGRATE  и другие средства импорта содержания в  Drupal Григорий НАУМОВЕЦ Киев Украина
План В чём задача и в чём проблема Средства для импорта содержания в Drupal из популярных  CMS Универсальные средства:  Migrate, Node import  и другие Хранение содержания в  Drupal:  обзор таблиц Node import  и типичные проблем ы переноса данных Migrate  и   вспомогательные модули Новые возможности Перспективы Целевая аудитория: содержание должно быть понятно и начинающим  
Создание сайта на основе существующего Сколько статей/нод нужно перенести? Если мало –может, быстрее всего будет скопировать их вручную? Импорт содержания: задача-минимум – перенести основное содержание (заголовки и тела статей/нод) Задача-максимум – полный перенос сайта, включая Классификационные категории (таксономия)  Файлы, их  URL ы и связь со статьями/нодами URL ы статей/нод Языки статей/нод, связь между разноязычными версиями Пользователи, их пароли, профили, права доступа Авторство статей/нод Даты создания/модификации статей/нод Показатели оценки статей/нод пользователями или менеджерами сайта И наверняка что-нибудь ещё, что вы заранее не смогли предугадать
“ Переезд” на  Drupal  с других  CMS:  готовые решения Home  » Installation guide » Migrating to Drupal http://drupal.org/handbook/migrating Предлагаются либо специальные модули для переезда с конкретной  CMS  на  Drupal,  либо наборы скриптов и инструкций по переносу баз данных и файлов   Проверяйте, для каких версий исходной  CMS  и Друпала разработаны модули или скрипты: если с тех пор структуре баз данных, старые скрипты могут не сработать
Примеры модулей для  “переезда” на  Drupal  с других  CMS Joomla to Drupal http://drupal.org/project/joomla Wordpress Import http://drupal.org/project/wordpress_import   WP2Drupal http://drupal.org/project/wp2drupal PHP-Nuke to Drupal http://drupal.org/project/phpnuke2drupal phpBB2Drupal http://drupal.org/project/phpbb2drupal vBulletin to Drupal http://drupal.org/project/vbtodrupal И т.д. и т.п.
Сравнение различных модулей для импорта и экспорта http://groups.drupal.org/node/21338 Comparison of Content and User Import and Export Modules
Модуль  Node import http://drupal.org/project/node_import Импорт содержания из текстовых файлов в формате CSV (comma-separated values)  или  TSV (tab-separated values) CSV  или  Т SV  можно экспортировать из  Microsoft Excel,  или из  phpmyadmin Текст в файле должен быть в кодировке  UTF-8
Модуль  Node import Можно импортировать данные в поля нод стандартных типов ( page, story, etc. ) и нестандартных  (CCK)   В ходе импорта анализируется структура исходной  CSV- таблицы  и задаётся соответствие: какую колонку таблицы и мпортировать в какое поле ноды Field 6 Field 5 Field 4 Field 3 Field 2 Field 1 Исходные данные Language CCK Field 2 CCK Field 1 Timestamp Body Title Node
Node import:  возможн ы е проблемы Перенос классификационных категорий в таксономию: возможна разная структура записи В исходном материале категории для каждой статьи перечислены через запятую, в Друпале о каждой таксономической категории  (tid)  делается отдельная запись с указанием идентификаторов ноды  (nid, vid) Для простоты показан случай, когда номера нод и таксономических терминов равны номерам статей и классифкационных категорий в исходном материале – но реально это может быть не так 17,93 18 17,93 17 8,40,41,58 16 categories articlenumber
Возможное решение таких проблем Создаётся временное («техническое») поле, куда импортируются данные, которые нужно будет преобразовать (например, список категорий через запятую) Потом пишется  sql- скрипт (или  php- код ), который выполняет нужное преобразование: в данном случае, просматривает содержимое временного поля и для каждой найденной категории создаёт соответствующую запись в таблице  term_node Заодно, при необходимости, коды категорий исходного материала меняются на идентификаторы таксономических категорий Друпала Когда импорт содержания закончен и всё проверено, временные поля можно удалить
Node import:  ещё один пример  возможн ы х проблем Перенос многоязычного сайта: возможна разная схема записи данных о языке и стыковки разноязычных статей/нод Пример: в исходном материале язык описывается цифровым кодом ( 1,2,… ), разноязычные версии стыкуются по номеру статьи ( articlenumber ) В Друпале язык описывается буквенным кодом ( en , ru ,… ), разноязычные версии стыкуются по  tnid  ( номеру ноды-«оригинала» ) ,   при этом номера нод не равны номерам статей  ( nid ≠ articlenumber ) 2 3757 1 3757 2 3756 1 3756 language articlenumber ru en ru en language 3 4 3 3 1 2 1 1 tnid nid
Возможное решение Исходный номер статьи ( articlenumber ) импортируется во временное поле Пишется  sql- скрипт (или  php- код ), который должен: Преобразовать коды языков для поля  ‘ language ’   ( ‘ 1 ’->’ en ’, ‘ 2 ’->’ ru ’  и т.д.) Сформировать значения поля  ‘ tnid ’  таким образом, чтобы, допустим, для нод с  language = ’ en ’  tnid = nid а для нод с  language = ’ ru ’  tnid  =   номеру англоязычной ноды с таким же значением   articlenumber . В конце временные поля удалить
А как вообще в Друпале хранится содержание? В каких таблицах   баз ы данных   хранится основное содержание ноды и прочие данные, которые с ней связаны?
Table:   node id  ноды id  версии ноды тип ( page ,  story , etc.) язык заголовок id  пользователя Связь разноязычных версий:  id  ноды-«оригинала» статус перевода Вопреки ожиданиям, в таблице  “node”  НЕТ ОСНОВНОГО СОДЕРЖАНИЯ НОДЫ  (body) Оно хранится в таблице  “node_revisions”
Table:   node_revisions id  ноды id  версии ноды id  пользователя “ тело” анонс Формат  интерпретации содержания :  “ filtered html ”, “ full html ”, “ php ”, etc. Именно в этой таблице хранится основное содержание («тело») ноды заголовок
Дополнительные таблицы для нестандартных типов  CCK  и используемых в них полей Таблица, где хранятся значения дополнительных полей  CCK  для нод определённого типа ( “ intlproj ” ) привязка к ноде по  id  версии и ноды значения дополнительных полей Таблица, где хранятся значения дополнительного поля  CCK  ( “ areafocus ” ), используемого   в нодах нескольких типов значение дополнительного поля привязка к ноде по  id  версии и ноды
Таблицы, в которых описана таксономия
Данные о файлах и их связи с нодами: таблицы  upload  и  files   id  ноды id  версии ноды id  файла id  пользователя
Данные об адресах (алиасах) нод:  таблица  url_alias Source  – системный адрес ‘node/1’ Destination  – адрес-псевдоним ‘welcome’ id  адреса язык, к которому привязан адрес
Связь таблиц, где хранится информация о ноде Основн ые данные о ноде node Основное содержание ноды, версии node_revisions Значения полей, включённых в  CCK  тип  CCK1 content_type_cck1 Значения  дополнительного  поля  field1 content_field_field1 URL  нод ы url_alias Ссылки на приложенные файлы upload Подробнее о приложенных файлах files Данн ые о пользователе - авторе   нод ы users Таксономия нод ы term_node Подробнее о таксономии term_node term_data term_hierarchy vocabulary
Проблема импорта из множества связанных таблиц В Друпале содержание разбросано по множеству связанных таблиц Что, если в исходной  CMS  содержание тоже разбросано по разным таблицам? Прежде чем создавать  CSV- файл и подсовывать его под  node_import,  придётся соединить нужные данные из разных таблиц в одной Т.е. нужна предварительная обработка исходного материала
Импорт содержания CMS –  источник данных Drupal Выделить содержание определённого типа Манипуляция данными (например, объединение таблиц, перекодировка, замена значений) Экспорт таблицы данных Манипуляция данными Создать / определить  тип  CCK  и соответствующие поля для импорта содержания Проанализировать импортируемую таблицу, задать соответствие полей Импорт таблицы данных Манипуляция данными Доработка напильником и др. инструментами PROFIT!   
Модули для преобразования данных Import / Export API http://drupal.org/project/importexportapi Transformations http://drupal.org/project/transformations This module transforms data. It doesn't care which data, and it doesn't care how. This module is complex, and strongly object-oriented. If you're afraid of classes and objects in PHP, run away now. This module can do lots in principle, but little out of the box.
Модуль  Migrate:  зависимость от других модулей Table Wizard Schema Views Migrate Extras.  (для импорта полей  CCK  и взаимодействия с некоторыми другими модулями) Advanced help  - рекомендуется
Модули  Table Wizard (TW)  и  Schema Модуль  Schema :  API  для операций с таблицами в базе данных Table Wizard  позволяет : Просматривать, фильтровать и т.п. таблицы в базе данных средствами  Views   Анализировать данные – показывать диапазон значений и т.п. Устанавливать связи между таблицами и совмещать их данные Импортировать данные из  CSV- таблиц TW  предоставляет  API  для работы других модулей с таблицами базы данных через  Views
Последовательность действий при импорте через  Migrate http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard http://civicactions.com/blog/2009/jul/25/migrating_your_website_drupal
Последовательность действий при импорте через  Migrate Втянуть таблицу с данными в  MySQL  У таблицы д.б. единственный основной ключ ( primary key );  при необходимости - отредактировать Использовать  Table Wizard ( admin/content/tw )  и пометить нужные таблицы Если данн ые хранятся в нескольких таблицах – построить связи ( admin/content/tw/relationships ) Проанализировать данные и построить таблицы соответствий ( content sets ) между исходными полями и полями, куда нужно импортировать данные ( admin/content/migrate/destinations ) Выбрать таблицу соответствий и запустить процесс миграции ( admin/content/migrate/process )
Шаги импорта данных через  Migrate Выбор таблицы в  Table Wizard : таблица  ‘legacy_products’   Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate Таблиц а  ‘legacy_products’ выбрана показан а информация о её содержании:  количество записей - 4 Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate Анализ таблицы ‘legacy_products’  поля можно комментировать, помечать как игнорируемые Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate Просмотр содержания таблицы ‘legacy_products’  (без игнорируемых полей ) Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate Разметка импорта полей из таблицы в ноду Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate При этом задаются такие н а значения для импорта: CCK: SKU Number value   sku CCK: Price value   price Node: Teaser   description Node: Body   description Node: Title   name Node: Authored by (uid) 1 <none> Destination field Default value Source field
Шаги импорта данных через  Migrate Задание команды на импорт Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate Сообщение о результатах импорта: импортировано 4 записи Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Шаги импорта данных через  Migrate В списке нод появилось 4 новых ноды они пока не опубликованы – чтобы можно было проверить, всё ли с ними в порядке Pictures from manual by Angie Byron  http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
Новое и полезное в  Migrate  (+ TW ) : Работа с таблицами в базе данных Возможность объединения   данных из нескольких таблиц Более удобный и наглядный интерфейс для анализа, фильтрации, просмотра, установки соответствий Возможность автоматического разбора значений, перечисленных через запятую Hooks  для разработчиков дополнительных модулей: см. Migrate: Hooks Migrate API - new in migrate-1.0-beta4 and beyond.  http://drupal.org/node/415190
Развитие  Migrate Для  Drupal 6  сделан  Migrate 1.0 Migrate 2.0  разрабатывается для  D7 –  после чего планируется  backport  на  D6. Migrate 2.0  не должно зависеть от   модулей   Views  и  Table Wizard
Спасибо за внимание! Контактная информация: http://camp10.drupal.ua/users/GN [email_address]

More Related Content

PDF
Лекция #3. Введение в языки разметки web-страниц
PPTX
Google docs
PDF
Лекция #2. Принцип организации World Wide Web
PPT
Lection1
PDF
Лекция #1. Основы Web-технологий
PDF
C++ STL & Qt. Занятие 06.
PDF
C++ весна 2014 лекция 2
PDF
C++ осень 2013 лекция 1
Лекция #3. Введение в языки разметки web-страниц
Google docs
Лекция #2. Принцип организации World Wide Web
Lection1
Лекция #1. Основы Web-технологий
C++ STL & Qt. Занятие 06.
C++ весна 2014 лекция 2
C++ осень 2013 лекция 1

What's hot (19)

PDF
лек13 3
PPTX
DBD lection 4. Big Data, NoSQL. In Russian.
PDF
C++ осень 2013 лекция 9
PDF
C++ осень 2013 лекция 2
PPTX
HTML
PDF
C++ осень 2013 лекция 8
PDF
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
PDF
C++ осень 2013 лекция 7
PPTX
Мировые информационные ресурсы. Лекция 4
PPT
DBD lection 1. Intro in Database Design. In Russian.
PPTX
Управление Данными. Лекция 7
PPTX
"Оффис вне оффиса"
PPTX
Клочков А. Автоматизация рассылки запросов потенциальным поставщикам средст...
PDF
Perl6 Pod Extend
PPT
В новый год - с новой базой. Инструменты свертки и начальной загрузки данных ...
PDF
C++ STL & Qt. Занятие 09.
PPTX
Мировые информационные ресурсы. Лекция 5
RTF
PPS
Presentation deja vu_x_animated_05-02-20010_gm
лек13 3
DBD lection 4. Big Data, NoSQL. In Russian.
C++ осень 2013 лекция 9
C++ осень 2013 лекция 2
HTML
C++ осень 2013 лекция 8
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
C++ осень 2013 лекция 7
Мировые информационные ресурсы. Лекция 4
DBD lection 1. Intro in Database Design. In Russian.
Управление Данными. Лекция 7
"Оффис вне оффиса"
Клочков А. Автоматизация рассылки запросов потенциальным поставщикам средст...
Perl6 Pod Extend
В новый год - с новой базой. Инструменты свертки и начальной загрузки данных ...
C++ STL & Qt. Занятие 09.
Мировые информационные ресурсы. Лекция 5
Presentation deja vu_x_animated_05-02-20010_gm
Ad

Similar to Drupal Migrate (20)

PPT
идеология Drupal 8 уже в drupal 7 вячеслав касихин
PPTX
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
PPT
0041
PPT
базы данных в Delphi
PPTX
Html лаб 2
DOC
0039
PDF
Взаимодействие с источниками данных в GLPK
PPT
Drupal организация разработки
PPT
Drupal -organizaciya_razrabotki
PPT
Drupal и возможности его применения
PPT
Стандарты и соглашения в сложных ООП-приложениях
PPTX
High Load 2009 Dimaa Rus Ready
PPT
Работа с полями (fields) в Drupal 7
PDF
Теория языков программирования некоторые слайды к лекциям
PDF
Ctools magic
PDF
инструментарий
PPT
Trening modul2-webinar11
PDF
Bloch, bodoff руководство. сервлеты
PPTX
LMS Moodle с точки зрения программиста
идеология Drupal 8 уже в drupal 7 вячеслав касихин
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
0041
базы данных в Delphi
Html лаб 2
0039
Взаимодействие с источниками данных в GLPK
Drupal организация разработки
Drupal -organizaciya_razrabotki
Drupal и возможности его применения
Стандарты и соглашения в сложных ООП-приложениях
High Load 2009 Dimaa Rus Ready
Работа с полями (fields) в Drupal 7
Теория языков программирования некоторые слайды к лекциям
Ctools magic
инструментарий
Trening modul2-webinar11
Bloch, bodoff руководство. сервлеты
LMS Moodle с точки зрения программиста
Ad

More from Andrii Podanenko (20)

PDF
Глобальні навчальні дні друпал
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
PDF
Головні Принципи Автоматизації
PDF
Docker SQL Continuous Integration Flow
PDF
Drupal 8 DevOps . Profile and SQL flows.
PPTX
Drupal 8 configuration development flow
PPTX
MoldCamp - multidimentional testing workflow. CIBox.
PDF
CIbox - OpenSource solution for making your #devops better
PDF
DrupalCon Los Angeles - Continuous Integration Toolbox
PPTX
Drupal Continuous Integration Workflow
PDF
Сейчас самое время...ЖИТЬ!
PDF
Start using vagrant now!
PDF
Live deployment, ci, drupal
PDF
Drupal contrib module maintaining
PDF
Drupal codesprint kyiv drupal cafe 07.02.2013
PDF
Drupal 8 what to wait from
PDF
Do + ldo for developers(full)
PDF
Диалоговый интенсив 2012 карпаты
PDF
психолог в социальных медиа
PDF
Ubercart7 views catalog ru
Глобальні навчальні дні друпал
природна і економна дорожня карта для переходу команди розробки на тест центр...
Головні Принципи Автоматизації
Docker SQL Continuous Integration Flow
Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 configuration development flow
MoldCamp - multidimentional testing workflow. CIBox.
CIbox - OpenSource solution for making your #devops better
DrupalCon Los Angeles - Continuous Integration Toolbox
Drupal Continuous Integration Workflow
Сейчас самое время...ЖИТЬ!
Start using vagrant now!
Live deployment, ci, drupal
Drupal contrib module maintaining
Drupal codesprint kyiv drupal cafe 07.02.2013
Drupal 8 what to wait from
Do + ldo for developers(full)
Диалоговый интенсив 2012 карпаты
психолог в социальных медиа
Ubercart7 views catalog ru

Drupal Migrate

  • 1. Модуль MIGRATE и другие средства импорта содержания в Drupal Григорий НАУМОВЕЦ Киев Украина
  • 2. План В чём задача и в чём проблема Средства для импорта содержания в Drupal из популярных CMS Универсальные средства: Migrate, Node import и другие Хранение содержания в Drupal: обзор таблиц Node import и типичные проблем ы переноса данных Migrate и вспомогательные модули Новые возможности Перспективы Целевая аудитория: содержание должно быть понятно и начинающим 
  • 3. Создание сайта на основе существующего Сколько статей/нод нужно перенести? Если мало –может, быстрее всего будет скопировать их вручную? Импорт содержания: задача-минимум – перенести основное содержание (заголовки и тела статей/нод) Задача-максимум – полный перенос сайта, включая Классификационные категории (таксономия) Файлы, их URL ы и связь со статьями/нодами URL ы статей/нод Языки статей/нод, связь между разноязычными версиями Пользователи, их пароли, профили, права доступа Авторство статей/нод Даты создания/модификации статей/нод Показатели оценки статей/нод пользователями или менеджерами сайта И наверняка что-нибудь ещё, что вы заранее не смогли предугадать
  • 4. “ Переезд” на Drupal с других CMS: готовые решения Home » Installation guide » Migrating to Drupal http://drupal.org/handbook/migrating Предлагаются либо специальные модули для переезда с конкретной CMS на Drupal, либо наборы скриптов и инструкций по переносу баз данных и файлов Проверяйте, для каких версий исходной CMS и Друпала разработаны модули или скрипты: если с тех пор структуре баз данных, старые скрипты могут не сработать
  • 5. Примеры модулей для “переезда” на Drupal с других CMS Joomla to Drupal http://drupal.org/project/joomla Wordpress Import http://drupal.org/project/wordpress_import WP2Drupal http://drupal.org/project/wp2drupal PHP-Nuke to Drupal http://drupal.org/project/phpnuke2drupal phpBB2Drupal http://drupal.org/project/phpbb2drupal vBulletin to Drupal http://drupal.org/project/vbtodrupal И т.д. и т.п.
  • 6. Сравнение различных модулей для импорта и экспорта http://groups.drupal.org/node/21338 Comparison of Content and User Import and Export Modules
  • 7. Модуль Node import http://drupal.org/project/node_import Импорт содержания из текстовых файлов в формате CSV (comma-separated values) или TSV (tab-separated values) CSV или Т SV можно экспортировать из Microsoft Excel, или из phpmyadmin Текст в файле должен быть в кодировке UTF-8
  • 8. Модуль Node import Можно импортировать данные в поля нод стандартных типов ( page, story, etc. ) и нестандартных (CCK) В ходе импорта анализируется структура исходной CSV- таблицы и задаётся соответствие: какую колонку таблицы и мпортировать в какое поле ноды Field 6 Field 5 Field 4 Field 3 Field 2 Field 1 Исходные данные Language CCK Field 2 CCK Field 1 Timestamp Body Title Node
  • 9. Node import: возможн ы е проблемы Перенос классификационных категорий в таксономию: возможна разная структура записи В исходном материале категории для каждой статьи перечислены через запятую, в Друпале о каждой таксономической категории (tid) делается отдельная запись с указанием идентификаторов ноды (nid, vid) Для простоты показан случай, когда номера нод и таксономических терминов равны номерам статей и классифкационных категорий в исходном материале – но реально это может быть не так 17,93 18 17,93 17 8,40,41,58 16 categories articlenumber
  • 10. Возможное решение таких проблем Создаётся временное («техническое») поле, куда импортируются данные, которые нужно будет преобразовать (например, список категорий через запятую) Потом пишется sql- скрипт (или php- код ), который выполняет нужное преобразование: в данном случае, просматривает содержимое временного поля и для каждой найденной категории создаёт соответствующую запись в таблице term_node Заодно, при необходимости, коды категорий исходного материала меняются на идентификаторы таксономических категорий Друпала Когда импорт содержания закончен и всё проверено, временные поля можно удалить
  • 11. Node import: ещё один пример возможн ы х проблем Перенос многоязычного сайта: возможна разная схема записи данных о языке и стыковки разноязычных статей/нод Пример: в исходном материале язык описывается цифровым кодом ( 1,2,… ), разноязычные версии стыкуются по номеру статьи ( articlenumber ) В Друпале язык описывается буквенным кодом ( en , ru ,… ), разноязычные версии стыкуются по tnid ( номеру ноды-«оригинала» ) , при этом номера нод не равны номерам статей ( nid ≠ articlenumber ) 2 3757 1 3757 2 3756 1 3756 language articlenumber ru en ru en language 3 4 3 3 1 2 1 1 tnid nid
  • 12. Возможное решение Исходный номер статьи ( articlenumber ) импортируется во временное поле Пишется sql- скрипт (или php- код ), который должен: Преобразовать коды языков для поля ‘ language ’ ( ‘ 1 ’->’ en ’, ‘ 2 ’->’ ru ’ и т.д.) Сформировать значения поля ‘ tnid ’ таким образом, чтобы, допустим, для нод с language = ’ en ’ tnid = nid а для нод с language = ’ ru ’ tnid = номеру англоязычной ноды с таким же значением articlenumber . В конце временные поля удалить
  • 13. А как вообще в Друпале хранится содержание? В каких таблицах баз ы данных хранится основное содержание ноды и прочие данные, которые с ней связаны?
  • 14. Table: node id ноды id версии ноды тип ( page , story , etc.) язык заголовок id пользователя Связь разноязычных версий: id ноды-«оригинала» статус перевода Вопреки ожиданиям, в таблице “node” НЕТ ОСНОВНОГО СОДЕРЖАНИЯ НОДЫ (body) Оно хранится в таблице “node_revisions”
  • 15. Table: node_revisions id ноды id версии ноды id пользователя “ тело” анонс Формат интерпретации содержания : “ filtered html ”, “ full html ”, “ php ”, etc. Именно в этой таблице хранится основное содержание («тело») ноды заголовок
  • 16. Дополнительные таблицы для нестандартных типов CCK и используемых в них полей Таблица, где хранятся значения дополнительных полей CCK для нод определённого типа ( “ intlproj ” ) привязка к ноде по id версии и ноды значения дополнительных полей Таблица, где хранятся значения дополнительного поля CCK ( “ areafocus ” ), используемого в нодах нескольких типов значение дополнительного поля привязка к ноде по id версии и ноды
  • 17. Таблицы, в которых описана таксономия
  • 18. Данные о файлах и их связи с нодами: таблицы upload и files id ноды id версии ноды id файла id пользователя
  • 19. Данные об адресах (алиасах) нод: таблица url_alias Source – системный адрес ‘node/1’ Destination – адрес-псевдоним ‘welcome’ id адреса язык, к которому привязан адрес
  • 20. Связь таблиц, где хранится информация о ноде Основн ые данные о ноде node Основное содержание ноды, версии node_revisions Значения полей, включённых в CCK тип CCK1 content_type_cck1 Значения дополнительного поля field1 content_field_field1 URL нод ы url_alias Ссылки на приложенные файлы upload Подробнее о приложенных файлах files Данн ые о пользователе - авторе нод ы users Таксономия нод ы term_node Подробнее о таксономии term_node term_data term_hierarchy vocabulary
  • 21. Проблема импорта из множества связанных таблиц В Друпале содержание разбросано по множеству связанных таблиц Что, если в исходной CMS содержание тоже разбросано по разным таблицам? Прежде чем создавать CSV- файл и подсовывать его под node_import, придётся соединить нужные данные из разных таблиц в одной Т.е. нужна предварительная обработка исходного материала
  • 22. Импорт содержания CMS – источник данных Drupal Выделить содержание определённого типа Манипуляция данными (например, объединение таблиц, перекодировка, замена значений) Экспорт таблицы данных Манипуляция данными Создать / определить тип CCK и соответствующие поля для импорта содержания Проанализировать импортируемую таблицу, задать соответствие полей Импорт таблицы данных Манипуляция данными Доработка напильником и др. инструментами PROFIT! 
  • 23. Модули для преобразования данных Import / Export API http://drupal.org/project/importexportapi Transformations http://drupal.org/project/transformations This module transforms data. It doesn't care which data, and it doesn't care how. This module is complex, and strongly object-oriented. If you're afraid of classes and objects in PHP, run away now. This module can do lots in principle, but little out of the box.
  • 24. Модуль Migrate: зависимость от других модулей Table Wizard Schema Views Migrate Extras. (для импорта полей CCK и взаимодействия с некоторыми другими модулями) Advanced help - рекомендуется
  • 25. Модули Table Wizard (TW) и Schema Модуль Schema : API для операций с таблицами в базе данных Table Wizard позволяет : Просматривать, фильтровать и т.п. таблицы в базе данных средствами Views Анализировать данные – показывать диапазон значений и т.п. Устанавливать связи между таблицами и совмещать их данные Импортировать данные из CSV- таблиц TW предоставляет API для работы других модулей с таблицами базы данных через Views
  • 26. Последовательность действий при импорте через Migrate http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard http://civicactions.com/blog/2009/jul/25/migrating_your_website_drupal
  • 27. Последовательность действий при импорте через Migrate Втянуть таблицу с данными в MySQL У таблицы д.б. единственный основной ключ ( primary key ); при необходимости - отредактировать Использовать Table Wizard ( admin/content/tw ) и пометить нужные таблицы Если данн ые хранятся в нескольких таблицах – построить связи ( admin/content/tw/relationships ) Проанализировать данные и построить таблицы соответствий ( content sets ) между исходными полями и полями, куда нужно импортировать данные ( admin/content/migrate/destinations ) Выбрать таблицу соответствий и запустить процесс миграции ( admin/content/migrate/process )
  • 28. Шаги импорта данных через Migrate Выбор таблицы в Table Wizard : таблица ‘legacy_products’ Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 29. Шаги импорта данных через Migrate Таблиц а ‘legacy_products’ выбрана показан а информация о её содержании: количество записей - 4 Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 30. Шаги импорта данных через Migrate Анализ таблицы ‘legacy_products’ поля можно комментировать, помечать как игнорируемые Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 31. Шаги импорта данных через Migrate Просмотр содержания таблицы ‘legacy_products’ (без игнорируемых полей ) Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 32. Шаги импорта данных через Migrate Разметка импорта полей из таблицы в ноду Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 33. Шаги импорта данных через Migrate При этом задаются такие н а значения для импорта: CCK: SKU Number value   sku CCK: Price value   price Node: Teaser   description Node: Body   description Node: Title   name Node: Authored by (uid) 1 <none> Destination field Default value Source field
  • 34. Шаги импорта данных через Migrate Задание команды на импорт Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 35. Шаги импорта данных через Migrate Сообщение о результатах импорта: импортировано 4 записи Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 36. Шаги импорта данных через Migrate В списке нод появилось 4 новых ноды они пока не опубликованы – чтобы можно было проверить, всё ли с ними в порядке Pictures from manual by Angie Byron http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
  • 37. Новое и полезное в Migrate (+ TW ) : Работа с таблицами в базе данных Возможность объединения данных из нескольких таблиц Более удобный и наглядный интерфейс для анализа, фильтрации, просмотра, установки соответствий Возможность автоматического разбора значений, перечисленных через запятую Hooks для разработчиков дополнительных модулей: см. Migrate: Hooks Migrate API - new in migrate-1.0-beta4 and beyond. http://drupal.org/node/415190
  • 38. Развитие Migrate Для Drupal 6 сделан Migrate 1.0 Migrate 2.0 разрабатывается для D7 – после чего планируется backport на D6. Migrate 2.0 не должно зависеть от модулей Views и Table Wizard
  • 39. Спасибо за внимание! Контактная информация: http://camp10.drupal.ua/users/GN [email_address]