[Mysql] Migrer les tables d'un forum vers un autre (tforum > smf)

Salut la compagnie :slight_smile:

voilà je change de forum, mon cher tForum n’étant plus mis à jour… je suis passé à SMF (excellent d’ailleurs). Sauf que voilà : pas loin de 40 000 messages et mes utilisateurs… je veux pas jetter tout ca.

Commence la pénible, pour moi, mais nécessaire migration, et là pas d’outil déjà développé par les mecs de SMF pour le faire : normal tForum est plutôt exotique :slight_smile:

J’ai regardé leurs scripts mais j’encadre keudal au machin : 3000 lignes de codes, dont un bon bout spécifique au forum d’origine…

Bref je me dis qu’une conversion brute des données d’un forum à l’autre serait toujours mieux que rien, au moins les users et les messages, quitte à mettre tous les messages dans une seule board et ensuite je les déplace manuellement (si ca peut faciliter la vie ^^)

Quelqu’un peut m’aider à faire ca ? Je dois convertir, pour commencer, ca :

CREATE TABLE tbl_users (
UserID int(10) unsigned NOT NULL auto_increment,
UserName varchar(50) NOT NULL default ‘’,
Password tinyblob NOT NULL,
Email tinytext NOT NULL,
GroupID smallint(5) unsigned NOT NULL default ‘3’,
TitleID smallint(5) unsigned NOT NULL default ‘5’,
AvatarID smallint(5) unsigned NOT NULL default ‘0’,
Homepage text NOT NULL,
ICQNumber int(10) unsigned NOT NULL default ‘0’,
YahooHandle tinytext NOT NULL,
AOLHandle tinytext NOT NULL,
MSNHandle tinytext NOT NULL,
Signature text NOT NULL,
NumPost int(10) unsigned NOT NULL default ‘0’,
RegDate int(11) unsigned NOT NULL default ‘0’,
RegIP varchar(15) NOT NULL default ‘’,
SaveCookie smallint(1) unsigned NOT NULL default ‘1’,
ViewLastXDays varchar(5) NOT NULL default ‘-1’,
EmailNotifyPrivMsg tinyint(1) unsigned NOT NULL default ‘0’,
EmailSubbedTopics tinyint(1) unsigned NOT NULL default ‘0’,
LastActive int(11) unsigned NOT NULL default ‘0’,
LastAction tinytext NOT NULL,
ReadInfo text NOT NULL,
TimeZone tinyint(4) NOT NULL default ‘0’,
Bio text NOT NULL,
Location tinytext NOT NULL,
Birthday mediumint(8) unsigned NOT NULL default ‘0’,
PRIMARY KEY (UserID),
KEY username (UserName(7))
) TYPE=MyISAM;

En ca :

smf_members (
ID_MEMBER mediumint(8) unsigned NOT NULL auto_increment,
memberName varchar(80) NOT NULL default ‘’,
dateRegistered int(10) unsigned NOT NULL default ‘0’,
posts mediumint(8) unsigned NOT NULL default ‘0’,
ID_GROUP smallint(5) unsigned NOT NULL default ‘0’,
lngfile tinytext NOT NULL,
lastLogin int(11) NOT NULL default ‘0’,
realName tinytext NOT NULL,
instantMessages smallint(5) NOT NULL default ‘0’,
unreadMessages smallint(5) NOT NULL default ‘0’,
im_ignore_list tinytext NOT NULL,
passwd varchar(64) NOT NULL default ‘’,
emailAddress tinytext NOT NULL,
personalText tinytext NOT NULL,
gender tinyint(4) unsigned NOT NULL default ‘0’,
birthdate date NOT NULL default ‘0000-00-00’,
websiteTitle tinytext NOT NULL,
websiteUrl tinytext NOT NULL,
location tinytext NOT NULL,
ICQ tinytext NOT NULL,
AIM varchar(16) NOT NULL default ‘’,
YIM varchar(32) NOT NULL default ‘’,
MSN tinytext NOT NULL,
hideEmail tinyint(4) NOT NULL default ‘0’,
showOnline tinyint(4) NOT NULL default ‘1’,
timeFormat varchar(80) NOT NULL default ‘’,
signature text,
timeOffset float NOT NULL default ‘0’,
avatar tinytext NOT NULL,
im_email_notify tinyint(4) NOT NULL default ‘0’,
karmaBad smallint(5) unsigned NOT NULL default ‘0’,
karmaGood smallint(5) unsigned NOT NULL default ‘0’,
usertitle tinytext NOT NULL,
notifyAnnouncements tinyint(4) NOT NULL default ‘1’,
notifyOnce tinyint(4) NOT NULL default ‘1’,
memberIP tinytext NOT NULL,
secretQuestion tinytext NOT NULL,
secretAnswer tinytext NOT NULL,
ID_THEME tinyint(4) unsigned NOT NULL default ‘0’,
is_activated tinyint(3) unsigned NOT NULL default ‘1’,
validation_code varchar(10) NOT NULL default ‘’,
ID_MSG_LAST_VISIT int(10) unsigned NOT NULL default ‘0’,
additionalGroups tinytext NOT NULL,
smileySet varchar(48) NOT NULL default ‘’,
ID_POST_GROUP smallint(5) unsigned NOT NULL default ‘0’,
totalTimeLoggedIn int(10) unsigned NOT NULL default ‘0’,
passwordSalt varchar(5) NOT NULL default ‘’,
PRIMARY KEY (ID_MEMBER),
KEY memberName (memberName(30)),
KEY dateRegistered (dateRegistered),
KEY ID_GROUP (ID_GROUP),
KEY birthdate (birthdate),
KEY posts (posts),
KEY lastLogin (lastLogin),
KEY lngfile (lngfile(30)),
KEY ID_POST_GROUP (ID_POST_GROUP)
) TYPE=MyISAM;

Naturellement certains champs ne sont pas remplis puisqu’ils n’ont pas d’équivalent chez tForum, donc il y aura des vides :slight_smile:

Merci par avance !!

a mon avis c pas gagné…
c peu etre plus simple de garder l’ancien forum en lecteur seul… :wink:

Si je change de forum c’est pas pour garder l’ancien :slight_smile:

good luck :confused:

REPOST

rien avoir avec un niveau en php ou html lol

tu recrées au moins les différente rubrique de forums sur ton nouveau forum et quelques user et post…

tu prends t petit compte et t petits post de ton ancien forum sur excel
(tu fait pareil avec les enregistrment du nouveau pour avoir un guide)

et la boulot de c** tu t’amuse a deplacer les colonne qu’il faut, faire du search and replace pour faire correspondre les ident etc …

ya des approche plus systematique mais la c le plus simple :wink: c a ton nivo ?

Par mappage tu veux probablement dire “convertir des données stockées d’une certaine façon dans la première table et d’une autre dans la seconde” ?

C’est bien ca le coeur du problème… Je sais même pas à quoi ca sert BLOB par rapport à TEXT ^^

blob c binary large object (une image?)

Voui enfin peu importe, ce que je veux dire c’est que je saurais pas convertir seul les tables, d’où le topic d’ailleurs :slight_smile:

Pour les membres c’est pas compliqué, pour les autres tables faut conserver les liaisons entre nouveau identifiant et ancien identifiant…

star : tu veux un petit negre pour faire le boulot hein ? :slight_smile:

Le problème les mecs c’est que vous comprennez pas que si par simple aposition des mains vous arrivez à configurez les sessions de php en mode alpha, pour d’autres c’est complètement incompréhensible…

Si je savais le faire moi même j’aurais évidement pas demandé de l’aide ici j’aurais déjà convertit toutes les tables comme un grand. Je viens pas demander de l’aide pour le seul plaisir de vous occuper je me doute que vous avez autre chose à faire.

moi je fais comme tout le monde par apposition de mon cul… sur la chaise pendant de longues heures :wink:

desolé …

on peu que prosposer des soluces …

Ok je capte mieux.

Faire correspondre les champs c’est pas trop compliqué encore, c’est surtout comment convertir certains trucs comme le mot de passe :confused: Encore que je peux simplement importer ca à l’arrache et ensuite faire un reset des mots de passe, ca permettra de valider les comptes des gens ^^

EDIT: ah vouais faut que je teste tout ca en local, seulement 16 megas le mysql dump myadmin voudra pas me le upper sur easyphp même en local… j’ai entendu qu’il existait des scripts pour palier à ca, vous en connaissez ?

pkoi, c’est interdit ? 'fin j’ai des dumps qui font largement plus de 16mo qui se réimportent sans problème … bon c’est un peu longuet à envoyer, mais ça marche … il faut que le serveur soit configuré, car par défaut la limite des fichiers envoyables est de 2Mo, celui des requètes POST de 8mo, et la taille d’execution d’un script PHP de 8mo aussi (la taille maximale d’un fichier envoyable est donc la plus petite des trois) :oui:

sinon pour ton problème, bah déjà imprimes les deux structures de tables sur une feuille, côte à côte, puis ensuite avec un jolie crayon, tu relis les champs similaires … comme ça tu sauras quoi récupérer, et en quoi le convertir :jap:
ensuite bah tu fais un INSERT INTO … SELECT comme qu’à dis Paneb :oui:

Mon dump fait 16 mégas, et je sais pas modifier easyphp ^^ et puis sur mon serveur mutualisé je peux encore moins changer ^^

Mais bon c’est moins grave car je colle mon dump dans un dossier et je demande au support de me le upper :slight_smile:

Vouais j’ai imprimé tout ca, je vous tiens au courant merci bien :slight_smile:

Tu fais cmd , x:/…/EasyPhp, tu cherche mysql.exe
Tu fais Ok, tu rentres le password du root
Tu tape use database; (database = ta base de données)

et tu tape

help; et tu cherche “source”

Ca te permettra … d’importer tes données depuis un fichier SQL vers la BDD database.

Ca peut prendre du temps, mais sinon c’est l’idée.

bon avec mysql.exe ca veut pas :confused: j’importe à la mimine à coups de 2048ko ^^

star revien du coté lumineux c plus facile lol

si c’est linux… j’ai pas ca d’installé, et j’ai jamais essayé ^^

j’ai un Athlon 600 qui demande que ca en revanche, mais pour un autre topic alors :slight_smile:

Non, ça doit être les clefs qui posent problème.

[cpp]/*!40000 ALTER TABLE bbnwn_download_info DISABLE KEYS /;
LOCK TABLES bbnwn_download_info WRITE;
… tes requêtes …
UNLOCK TABLES;
/
!40000 ALTER TABLE bbnwn_download_info ENABLE KEYS */;[/cpp]

CHez moi un fichier de 100Mo (sous win) est passé, ça contenait en sus la table phpbb_search_word de 2 millions de données…