Pour le cas avec deux tables avec des utilisateurs on peut faire comme suivant, si le deux bdd ont le meme jeu de characteres et interclassement, les versions de XOOPS sont le meme, le structure de table users est le meme et le prefix des tables est differente (dans cette example on utilise xoopssrc et xoopsdst):
- sauvegardez les bases des donnees avant de commencer!
- utilisez phpMyAdmin en serveur source et allez au table xoopssrc_users du bdd source
- faites une export SQL et sauvegardez le a votre PC
- maitenant on travaille en phpMyAdmin du serveur de destination.
- allez au bdd de destination et faites une importe avec le fichier sauvegardee du pas precedente.
- maitenant il y a deux tables users dans le bdd: xoopssrc_users et xoopsdst_users.
- effacez en table xoopssrc_users le uid 1. C'est l'admin qui est deja present en xoopsdst_users.
- Dans le tab SQL entre le query suivante:
SELECT max( uid ) FROM `xoopssrc_users`
- Executez le query (Go) et notez le resultat.
- Arondi ce nummero en haut a une centaine (4321 -> 4400) et ca c'est notre offset.
- ouvrez le fichier sauvegardee et copiee le ligne insert:
INSERT INTO `xoopssrc_users` (`uid`, `name`, `uname`, `email`, `url`, `user_avatar`, `user_regdate`, `user_icq`, `user_from`, `user_sig`, `user_viewemail`, `actkey`, `user_aim`, `user_yim`, `user_msnm`, `pass`, `posts`, `attachsig`, `rank`, `level`, `theme`, `timezone_offset`, `last_login`, `umode`, `uorder`, `notify_method`, `notify_mode`, `user_occ`, `bio`, `user_intrest`, `user_mailok`) VALUES
- Mettez ce ligne dans une nouveau query SQL et modifiez le vers
INSERT INTO `xoopsdst_users` SELECT `uid` + 4400, `name`, `uname`, `email`, `url`, `user_avatar`, `user_regdate`, `user_icq`, `user_from`, `user_sig`, `user_viewemail`, `actkey`, `user_aim`, `user_yim`, `user_msnm`, `pass`, `posts`, `attachsig`, `rank`, `level`, `theme`, `timezone_offset`, `last_login`, `umode`, `uorder`, `notify_method`, `notify_mode`, `user_occ`, `bio`, `user_intrest`, `user_mailok` from xoopssrc_users ;
A faire:
remplacez `xoopssrc_users` ( par `xoopsdst_users` SELECT
ajoutez + et le nombre offset apres 'uid'
remplacez ) VALUES par from xoopssrc_users ;
- Executez le SQL.
- Dans le tab SQL entre le query suivante:
SELECT max( uid ) FROM `xoopsdst_users`
- Executez le query (Go) et notez le resultat pe 6543. C'est le nombre de fin.
- Alors si il y a des utilisateurs double dedans, sortez le table au nom d'utilisateur (uname) par cette sql:
select * from xoopsdst_users order by uname, uid
- Parcourir la liste et effacez les doubles (celui avec le plus grande uid)
- Faites le meme pour le double adresse email:
select * from xoopsdst_users order by email, uid
- Maitenant il faut mettre ce nouvelle utilisateurs dans le groupe d'utilisateurs enregistree.
- Executez le query suivant:
INSERT INTO `xoopsdst_groups_users_link` d (d.'uid', d.'groupid') SELECT s.`uid`, 2 FROM `xoopsdst_users` s WHERE s.'uid' BETWEEN 4400 AND 6543
A faire: mettez les bon nombres pour offset et fin.
- Allez au table xoopssrc_users et selectionnez operation drop.
Vous pouvez tester cette solution en PC local (moi, j'en ai pas tester du tout) avec XAMPP. Sauvegardez le bdd destination et restaurez le en phpMyAdmin de XAMPP.
(Pour eventuellement effacer les utilisateurs ajoutees:
DELETE FROM `xoopsdst_users WHERE 'uid' BETWEEN 4400 AND 6543
)