Сегодня пришлось переносить около 2000 пользователей со старого сайта на drupal 6 в drupal 7.
Конечно, можно было бы воспользоваться модулем feeds, но заказчик дал только дамп базы данных.
Итак:
1. Делаем дамп базы данных старого сайта и поднимаает локально:
Так-же поднимаем локально drupal 7 и в sites/default/settings.php настраиваем дрооступы к локальному серверу mysql.
2. Поднимаем старую базу данных:
3. теперь пишем модуль миграции:
создаем папку sites/all/modules/custom/uimport
создаем файл uimport.info
создаем файл uimport.module
4. Включаем модуль в админке, запускаем mysyte.com/uimport
5. Экспортируем таблицу users из старой базы и импортируем в новую.
Если не важны id юзера, то меняем
'uid' => $row['uid'],
на
'uid' => db_next_id(db_query('SELECT MAX(uid) FROM {users}')->fetchField()),
Также могут возникнуть проблемы, если у вас на новом сайте заведены пользователи, напримепр — тестовые. Предварительно удалите всех кроме uid=0 и uid=1
Скрипт был найден на alimozzaman.wordpress.com/2011/04/23/drupal-6-to-drupal-7-user-migration, оформлен в виде модула под друпал 7 и изменен под php 5.3
Конечно, можно было бы воспользоваться модулем feeds, но заказчик дал только дамп базы данных.
Итак:
1. Делаем дамп базы данных старого сайта и поднимаает локально:
>mysql -u username -p
create database 'old';
Так-же поднимаем локально drupal 7 и в sites/default/settings.php настраиваем дрооступы к локальному серверу mysql.
2. Поднимаем старую базу данных:
>mysql -u username -p old < old_dump.sql
3. теперь пишем модуль миграции:
создаем папку sites/all/modules/custom/uimport
создаем файл uimport.info
name = User import
description = User import.
core = 7.x
создаем файл uimport.module
<?php
function uimport_menu() {
$items['uimport'] = array(
'title' => 'Uimport',
'page callback' => '_uimport_process',
'access callback' => TRUE
);
return $items;
}
function _uimport_process() {
set_time_limit(3600);
$mysql_server = 'localhost'; // Server name
$mysql_userName = 'root';
$mysql_password = 'al20eX09';
$connection = mysql_connect($mysql_server, $mysql_userName, $mysql_password);
mysql_select_db('old', $connection);
// query
$query = 'SELECT * FROM users';
$count = 0;
$result = mysql_query('old', $query, $connection) or die(mysql_error() . '
' . $query);
while ($row = mysql_fetch_array($result)) {
//if($count++ > 10) break;
if ($row['uid'] == 0 || $row['uid'] == 1)
continue;
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
$new_password_hash = user_hash_password($row['pass'], 11);
//return '1';
if ($new_password_hash) {
$new_password_hash = 'U' . $new_password_hash;
}
$data = array(
'uid' => $row['uid'], //db_next_id(db_query('SELECT MAX(uid) FROM {users}')->fetchField()),
'name' => $row['name'],
'pass' => $new_password_hash,
'mail' => $row['mail'],
'theme' => $row['theme'],
'signature' => $row['signature'],
'signature_format' => $row['signature_format'],
'created' => $row['created'],
'access' => $row['access'],
'login' => $row['login'],
'status' => $row['status'],
'timezone' => $row['timezone'],
'language' => $row['language'],
'picture' => !empty($row['picture']) ? 1 : 0,
'init' => $row['init'],
'data' => $row['data'],
);
drupal_write_record('users', $data);
}
}
4. Включаем модуль в админке, запускаем mysyte.com/uimport
5. Экспортируем таблицу users из старой базы и импортируем в новую.
Если не важны id юзера, то меняем
'uid' => $row['uid'],
на
'uid' => db_next_id(db_query('SELECT MAX(uid) FROM {users}')->fetchField()),
Также могут возникнуть проблемы, если у вас на новом сайте заведены пользователи, напримепр — тестовые. Предварительно удалите всех кроме uid=0 и uid=1
delete from `users` where uid>1;
Скрипт был найден на alimozzaman.wordpress.com/2011/04/23/drupal-6-to-drupal-7-user-migration, оформлен в виде модула под друпал 7 и изменен под php 5.3