Недавно обновил сайт Drupal 6.22 => Drupal 7.10. При переносе автоматически перенеслись данные модуля Profile (поля MySQL profile_field, profile_value). Полистав сайт Drupal.org, я понял что этот модуль признан устаревшим, и при чистой установки Drupal 7 с нуля он даже не ставится. Соответственно, возник вопрос.
Как теперь перенести данные из модуля Profile в стандартные средства управления профилем в Drupal 7 - поля Field (field_data_field_***, da_field_revision_field_***)?
Комментарии
Для начала найдите таблицы в D7 профилей...
Ну таблицы то я вижу.
В таблицы:
da_field_config_instance
— построчно заносится информация о названиях создаваемых полях в профиле ("field_имя_поля")
Ну и для каждого создаваемого поля создаются отдельные таблицы в MySQL:
field_revision_field_имя_поля
Для примера, создаём поле ФИО пользователя — «field_real_name». Соответственно, в таблицах «da_field_config», «da_field_config_instance» появятся строки «field_real_name».
Ну и дополнительно в базе данных появятся таблицы: «field_data_field_real_name», «field_revision_field_real_name», где и будут храниться данные пользователей по этому полю.
С этим вопросов вроде не возникает. Но а так как я не программист, а лишь умею читать уже написанный код, меня интересуют есть ли готовые способы миграции данных. Возможно используя какой-либо промежуточный модуль (например, Profile2 в Drupal 7 или CCK Profile в Drupal 6). Возможно, SQL-запрос кто-нибудь уже написал.
To be fashion and have a warm winter, you should come to our northface outlet store online, here we sale discount north face jackets with best quality and lowest cost, free free shipping all over the world.
Как я догадываюсь можно на Drupal 6 установить модуль content profile. Перенести на него данные из стандартного профиля Drupal 6.
А затем уже при обновлении Drupal 6 на Drupal 7 данные уже перенесутся с помощью модуля обновления CCK.
В верном направлении копаю? У кого-нибудь есть опыт переноса данных в Drupal 6 из стандартного профиля в content profile?
И так, как решил. Длинно, нудно. Но как уж умею.
Создал в панели управления Drupal 7, в профиле, - новые аналогичные поля: День рождение, город, страна, реальное имя. Поигравшись добавляя данные о пользователях, полез ручками в базу данных MySQL (панель управления phpmydmin) и проанализировал новые получившиеся таблицы профиля filed в Drupal 7:
field_data_field_city
field_data_field_country
field_data_field_real_name
field_revision_field_birthday
field_revision_field_city
field_revision_field_country
field_revision_field_real_name
1. Разбил старую таблицу profile_value на таблицы: birthday, city, country, phone, real_name. (Помогают в такой разбивке данные из таблицы profile_field)
2. Добавил новые колонки в таблицы birthday, city, country, phone, real_name, соответствующие колонкам в новых таблицах field (расположив колонки в том же порядки). Т.е. по сути уже получил нужные мне таблицы.
3. Заполнил недостающие данные в полученных колонкам методом копировать/вставить - с помощью SQL-команд запросов к базе данных (запросы UPDATE, SET).
4. Очистил содержимое таблиц (запрос TRUNCATE):
field_data_field_city
field_data_field_country
field_data_field_real_name
field_revision_field_birthday
field_revision_field_city
field_revision_field_country
field_revision_field_real_name
удалив из них тестовые данные, которые появились в них когда я тестировал эти поля в Drupal 7.
5. Скопировал данные из таблиц birthday, city, country, phone, real_name в таблицы field:
city => field_data_field_city
country => field_data_field_country
real_name => field_data_field_real_name
birthday => field_revision_field_birthday
city => field_revision_field_city
country => field_revision_field_country
real_name => field_revision_field_real_name
При копирование выбрал метод "копировать только данные" (т.е. структуру таблиц не копировал).
6. С помощью команды phpmyadmin "восстановить таблицы", на всякий случай исправил имеющиеся ошибки, в том числе пересчитал индексы.