Миграция пользователей с другой CMS
5
Здравствуйте!
Уважаемые пользователи, подскажите есть ли скрипт или программа позволяющая автоматизировать процесс переноса пользователей, например, из prefix_users базы одного сайта в prefix_user базы другого сайта. Т.е. в скрипте указываем базу № 1, указываем какие поля из какой таблицы переносить в какую таблицу и какие поля базы № 2.
30 минут гуглопоиска не помогли.
Хотел перенести юзеров с php-nuke на livestreet
Уважаемые пользователи, подскажите есть ли скрипт или программа позволяющая автоматизировать процесс переноса пользователей, например, из prefix_users базы одного сайта в prefix_user базы другого сайта. Т.е. в скрипте указываем базу № 1, указываем какие поля из какой таблицы переносить в какую таблицу и какие поля базы № 2.
30 минут гуглопоиска не помогли.
Хотел перенести юзеров с php-nuke на livestreet
- +1
- 30 января 2010, 15:54
- makfatum
В принципе эта задача одним запросом решается, если вам это разово сделать нужно, то вот запросы переноса из vBulletin в LS 0.3.1 (под php-nuke переделать, думаю, не сложно будет):
1. Перенос пользователей (ls — база с LS (предполагается свежеустановленный LS без пользователей), vb — база с vBulletin):
2. Создание персональных блогов новых пользователей:
Суть такова — делаем insert, указываем нужные поля для переноса, и в качестве данных для insert подставляем результат select запроса из переносимой базы, соответственно поля выборки должны совпадать со вставляемыми в LS.
Возникает проблема с паролями — если принцип хранения разный (например, в исходном движке используется соль, а в LS — нет), то придется пользователей известить о смене пароля. Тут ситуации бывают разные.
1. Перенос пользователей (ls — база с LS (предполагается свежеустановленный LS без пользователей), vb — база с vBulletin):
INSERT INTO ls.prefix_user (user_login, user_password, user_mail, user_date_register, user_ip_register, user_profile_icq) SELECT username, password, email, passworddate, ipaddress, icq FROM vb.user;2. Создание персональных блогов новых пользователей:
INSERT INTO ls.prefix_blog (user_owner_id, blog_title, blog_description) SELECT user_id, CONCAT('Блог им. ', user_login), '' FROM ls.prefix_userСуть такова — делаем insert, указываем нужные поля для переноса, и в качестве данных для insert подставляем результат select запроса из переносимой базы, соответственно поля выборки должны совпадать со вставляемыми в LS.
Возникает проблема с паролями — если принцип хранения разный (например, в исходном движке используется соль, а в LS — нет), то придется пользователей известить о смене пароля. Тут ситуации бывают разные.
Сделал перенос данных по вашим рекомендациям. Дело в том, что количество и содержание и полей не совпадает. Везде, где смог найти соответствия, перенёс. В остальных полях вставил дефолтные значения. Сделал это только для таблицы prefix_user. На всякий случай почистил кэш. Но на сайте новые пользователи в списке так и не появились. Нужно ещё где-то что-то прописать или почистистить чего-то?
Может кому понадобиться готовое решение по переносу юзеров с php-nuke на LS
Для начала необходимо таблицу юзеров php-nuke импортировать в базу LS (т.е. в базе будут 2 таблицы юзеров: prefix_user пользователи LS, prefix_users пользователи php-nuke)
1. С учетом совета kks запрос для переноса юзеров
prefix может быть другим
2. Запрос создание персональных блогов новых пользователей без изменений
3. Преобразование формата даты регистрации юзеров к требуемому в LS (сохранить в файл, запустить скрипт)
?>
Т.к. метод хранения паролей у обоих систем одинаков, юзеры могут входить на LS под своими старыми паролями
В данное время пытаюсь устроить общий вход, выход, регистрацию юзеров у двух систем.
Для начала необходимо таблицу юзеров php-nuke импортировать в базу LS (т.е. в базе будут 2 таблицы юзеров: prefix_user пользователи LS, prefix_users пользователи php-nuke)
1. С учетом совета kks запрос для переноса юзеров
INSERT INTO prefix_user (user_login, user_password, user_mail, user_date_register, user_ip_register, user_activate, user_profile_name, user_profile_country, user_profile_site, user_profile_icq, user_profile_about) SELECT username, user_password, user_email, user_regdate, last_ip, user_active, name, user_from, user_website, user_icq, CONCAT_WS(", ",user_interests, user_occ) FROM prefix_users;prefix может быть другим
2. Запрос создание персональных блогов новых пользователей без изменений
INSERT INTO prefix_blog (user_owner_id, blog_title, blog_description) SELECT user_id, CONCAT('Блог им. ', user_login), '' FROM prefix_user3. Преобразование формата даты регистрации юзеров к требуемому в LS (сохранить в файл, запустить скрипт)
<?php
error_reporting (E_ALL ^ E_NOTICE);
ini_set("max_execution_time", "300000");
mysql_connect("localhost", "root", "")
or die("Could not connect");
mysql_select_db("name_db");
$result = mysql_query("SELECT username, user_regdate FROM prefix_users");
while(list($username, $user_regdate) = mysql_fetch_array($result)) {
$user_regdate = date("Y-m-d H:i:s", strtotime ($user_regdate));
mysql_query("UPDATE prefix_user SET user_date_register='".$user_regdate."' WHERE user_login='".$username."'");
} ?>
Т.к. метод хранения паролей у обоих систем одинаков, юзеры могут входить на LS под своими старыми паролями
В данное время пытаюсь устроить общий вход, выход, регистрацию юзеров у двух систем.
Комментарии (7)
RSS свернуть / развернуть