Необходимо перенести пользователей одной группы на другую копию битрикс.
Пока модуль переноса пользователей пишется, приходится делать это вручную. Ниже приведено описание преноса.
(Warning: перенос осуществляется между одинаковыми редакциями БУС)
[spoiler]
Для начала на машине, откуда переносятся пользователи выполняем запрос:
Тем самым мы создаем точную копию таблицы пользователей b_user;
Затем копируем нужных нам пользователей в эту таблицу:
GROUP_ID заменяем на свой. Затем дампим таблицу:
Переносим дамп на новый сервер и там восстанавливаем таблицу:
На данном этапе вновь добавляемые пользователи находятся у нас в таблице dump_b_user.
Осталось перенести их в таблицу пользователей. Важно понимать, что ID пользователей могут совпадать,
и тогда они не перенесутся. Чтобы избежать этого, сначала получаем список полей таблицы b_user без поля ID.
У меня получились такие поля:
TIMESTAMP_X,LOGIN,PASSWORD,CHECKWORD,ACTIVE,NAME,LAST_NAME,EMAIL,
LAST_LOGIN,DATE_REGISTER,LID,PERSONAL_PROFESSION,PERSONAL_WWW,PERSONAL_ICQ,PERSONAL_GENDER,
PERSONAL_BIRTHDATE,PERSONAL_PHOTO,PERSONAL_PHONE,PERSONAL_FAX,
PERSONAL_MOBILE,PERSONAL_PAGER,PERSONAL_STREET,PERSONAL_MAILBOX,PERSONAL_CITY,PERSONAL_STATE,PERSONAL_ZIP,
PERSONAL_COUNTRY,PERSONAL_NOTES,WORK_COMPANY,WORK_DEPARTMENT,WORK_POSITION,WORK_WWW,
WORK_PHONE,WORK_FAX,WORK_PAGER,WORK_STREET,WORK_MAILBOX,WORK_CITY,WORK_STATE,WORK_ZIP,
WORK_COUNTRY,WORK_PROFILE,WORK_LOGO,WORK_NOTES,ADMIN_NOTES,STORED_HASH,XML_ID,PERSONAL_BIRTHDAY,
EXTERNAL_AUTH_ID,CHECKWORD_TIME,SECOND_NAME,CONFIRM_CODE,LOGIN_ATTEMPTS,LAST_ACTIVITY_DATE,
AUTO_TIME_ZONE,TIME_ZONE,TIME_ZONE_OFFSET
Теперь подставим их в запрос вида:
У меня получился следующий запрос:
Все, нужные пользователи перенесены.
Теперь можно удалить временную таблицу dump_b_user.
Пока модуль переноса пользователей пишется, приходится делать это вручную. Ниже приведено описание преноса.
(Warning: перенос осуществляется между одинаковыми редакциями БУС)
[spoiler]
Для начала на машине, откуда переносятся пользователи выполняем запрос:
CRE ATE TABLE dump_b_user LIKE b_user; |
Затем копируем нужных нам пользователей в эту таблицу:
INS ERT IN TO dump_b_user SEL ECT b_user.* FR OM b_user inner join b_user_group on b_user.ID=b_user_group.USER_ID where b_user_group.GROUP_ID=9; |
mysqldump -u root -p DBNAME dump_b_user > /tmp/dump_b_user.sql |
mysql -u root -p DBNAME < /tmp/dump_b_user.sql |
Осталось перенести их в таблицу пользователей. Важно понимать, что ID пользователей могут совпадать,
и тогда они не перенесутся. Чтобы избежать этого, сначала получаем список полей таблицы b_user без поля ID.
SELECT GROUP_CONCAT(COLUMN_NAME) FR OM INFORMATION_SCHEMA.COLUMNS WH ERE TABLE_SCHEMA = '4dksoft' AND TABLE_NAME='dump_b_user' AND COLUMN_NAME NOT IN ('ID'); |
TIMESTAMP_X,LOGIN,PASSWORD,CHECKWORD,ACTIVE,NAME,LAST_NAME,EMAIL,
LAST_LOGIN,DATE_REGISTER,LID,PERSONAL_PROFESSION,PERSONAL_WWW,PERSONAL_ICQ,PERSONAL_GENDER,
PERSONAL_BIRTHDATE,PERSONAL_PHOTO,PERSONAL_PHONE,PERSONAL_FAX,
PERSONAL_MOBILE,PERSONAL_PAGER,PERSONAL_STREET,PERSONAL_MAILBOX,PERSONAL_CITY,PERSONAL_STATE,PERSONAL_ZIP,
PERSONAL_COUNTRY,PERSONAL_NOTES,WORK_COMPANY,WORK_DEPARTMENT,WORK_POSITION,WORK_WWW,
WORK_PHONE,WORK_FAX,WORK_PAGER,WORK_STREET,WORK_MAILBOX,WORK_CITY,WORK_STATE,WORK_ZIP,
WORK_COUNTRY,WORK_PROFILE,WORK_LOGO,WORK_NOTES,ADMIN_NOTES,STORED_HASH,XML_ID,PERSONAL_BIRTHDAY,
EXTERNAL_AUTH_ID,CHECKWORD_TIME,SECOND_NAME,CONFIRM_CODE,LOGIN_ATTEMPTS,LAST_ACTIVITY_DATE,
AUTO_TIME_ZONE,TIME_ZONE,TIME_ZONE_OFFSET
Теперь подставим их в запрос вида:
INS ERT IN TO b_user(ПОЛЯ) select (ПОЛЯ) from dump_b_user; |
INS ERT IN TO b_user(TIMESTAMP_X,LOGIN,PASSWORD,CHECKWORD,ACTIVE,NAME,LAST_NAME,EMAIL,LAST_LOGIN,DATE_REGISTER,LID,PERSONAL_PROFESSION,PERSONAL_WWW, PERSONAL_ICQ,PERSONAL_GENDER,PERSONAL_BIRTHDATE,PERSONAL_PHOTO,PERSONAL_PHONE,PERSONAL_FAX,PERSONAL_MOBILE,PERSONAL_PAGER,PERSONAL_STREET, PERSONAL_MAILBOX,PERSONAL_CITY,PERSONAL_STATE,PERSONAL_ZIP,PERSONAL_COUNTRY,PERSONAL_NOTES,WORK_COMPANY,WORK_DEPARTMENT,WORK_POSITION, WORK_WWW,WORK_PHONE,WORK_FAX,WORK_PAGER,WORK_STREET,WORK_MAILBOX,WORK_CITY,WORK_STATE,WORK_ZIP,WORK_COUNTRY,WORK_PROFILE,WORK_LOGO, WORK_NOTES,ADMIN_NOTES,STORED_HASH,XML_ID,PERSONAL_BIRTHDAY,EXTERNAL_AUTH_ID,CHECKWORD_TIME,SECOND_NAME,CONFIRM_CODE,LOGIN_ATTEMPTS, LAST_ACTIVITY_DATE,AUTO_TIME_ZONE,TIME_ZONE,TIME_ZONE_OFFSET) select TIMESTAMP_X,LOGIN,PASSWORD,CHECKWORD,ACTIVE,NAME,LAST_NAME,EMAIL,LAST_LOGIN, DATE_REGISTER,LID,PERSONAL_PROFESSION,PERSONAL_WWW,PERSONAL_ICQ,PERSONAL_GENDER,PERSONAL_BIRTHDATE,PERSONAL_PHOTO,PERSONAL_PHONE,PERSONAL_FAX, PERSONAL_MOBILE,PERSONAL_PAGER,PERSONAL_STREET,PERSONAL_MAILBOX,PERSONAL_CITY,PERSONAL_STATE,PERSONAL_ZIP,PERSONAL_COUNTRY,PERSONAL_NOTES, WORK_COMPANY,WORK_DEPARTMENT,WORK_POSITION,WORK_WWW,WORK_PHONE,WORK_FAX,WORK_PAGER,WORK_STREET,WORK_MAILBOX,WORK_CITY,WORK_STATE, WORK_ZIP,WORK_COUNTRY,WORK_PROFILE,WORK_LOGO,WORK_NOTES,ADMIN_NOTES,STORED_HASH,XML_ID,PERSONAL_BIRTHDAY,EXTERNAL_AUTH_ID,CHECKWORD_TIME, SECOND_NAME,CONFIRM_CODE,LOGIN_ATTEMPTS,LAST_ACTIVITY_DATE,AUTO_TIME_ZONE,TIME_ZONE,TIME_ZONE_OFFSET from dump_b_user; |
Теперь можно удалить временную таблицу dump_b_user.
dr op table dump_b_user; |