Histoire de migration

Billet

Pour ceux que ça pourrait intéresser, voici comment j'ai migré de Blogger à Dotclear .

Un outil abandonné de journal web, B2, permettait dimporter les archives Blogger. Dotclear permettait d'importer des archives B2. A priori ça semblait assez facile, détrompez-vous...

  • Installation de B2 dans un dossier toto à la racine de mon site
  • ouverture du fichier toto/blogger-2-b2.php et configuration de Blogger selon les instructions

Blogger exporte ses archives dans le dossier toto, une fois que c'est fait, on clique sur le bouton ok de B2 et l'importation commence. Problème, ça plante à partir de mes archives de juin 2003 avec une erreur me disant que j'ai une id en double. Après moults recherches, je découvre que les ID de Blogger sont tellement longues quelles sont tronquées lors de l'insertion dans la base !! Je modifie donc le champ ID de la table b2post en la faisant passer de INT(10) à BIGINT(30). Je vide la table et je recommence, ça marche, mon carnet Blogger est totalement importé dans B2 :-)

Deuxième étape, installation de Dotclear dernière version dans le dossier actuel de mon carnet, confifuration facile via le super assistant en ligne, je vais dans l'onglet outils et là Argghhh... l'outil d'import B2 n'est plus là !!! Ok, suppression de tous les fichiers Dotclear, suppression de toutes les tables Mysql Dotclear et je pars à la recherche de la version de Dotclear qui avait l'outil d'import. C'est la 1.0 RC2.

Installation de la 1.0RC2 dans mon carnet, import des données B2 et là même sanction que précédemment, je dois modifier INT(11) en BIGINT(30) pour pouvoir importer.

Ca y est, mes messages sont importés !!! Bon Maintenant, ménage dans les ID parceque je ne veux pas faire merder l'outil en changeant sa structure. Au début je pense tout simplement à renuméroter mes 274 messages un par un via phpmyadmin mais j'abandonne rapidemment, c'est trop long, trop chiant.

Je suis pas très bon en php/mysql mais je me dis que c'est faisable de changer tout dans une boucle, voici le code :

<?
pages = mysql_query( "SELECT * FROM  dc_post  ORDER BY  post_id ASC");

$nb_lignes = mysql_num_rows( $pages );
print "<h4>Il y a $nb_lignes pages</h4>
";
$increment=1;
while ($une_ligne = mysql_fetch_array( $pages))

{

         mysql_query("UPDATE dc_post SET post_id='$increment' WHERE post_id="$une_lignepost_id");
        $increment++;

}

?>

(edit : la syntaxe wiki a changé mon code php en lien, il faut lire WHERE post_id='$une_ligne CROCHET OUVRANT post_id CROCHET FERMANT ");

Nouveau problème, le champ id étant sur autoincrement, il est déjà à la limite maximale possible, en d'autres termes, si vous avez 50 messages, le prochain ne sera pas le 51 mais le 2147483647, limite maximale pour un int(11) atteinte lors de l'importation des ID à rallonge de Blogger. Il Faut donc depuis phpMyadmin faire une copie de la table dc_post sans cocher "autoincrement" puis intervertir la table dc_post originale et la table dc_post copiée et dont l'autoincrement est réinitialisé.

Dernière étape, supprimer tous les fichiers 1.0RC2 et mettre les fichiers de la 1.2beta sur le serveur, lancer l'installation qui proposera la mise à jour.

Voilà, je vous ai épargné tous les processus d'essai/erreur qui m'ont permis de faire la migration, vous avez le produit fini, bande de veinards... ;-)

Commentaires

1. Le samedi 8 mai 2004, 00:25 par mat

Ok, maintenant, c'est sur, tu ne pourras plus jamais pretendre que tu n'es pas un vrai geek :)

2. Le jeudi 26 mai 2005, 00:35 par neil

n'avez-vous pas eu de problème avec les caractères accentués lors de l'import dans B2? Moi oui! :( Auriez-vous une solution pour cela aussi? :)

3. Le vendredi 8 juillet 2005, 16:37 par jul

tiens je vais essayer ce soir :)

4. Le lundi 12 décembre 2005, 10:29 par Scooter System

Intéressant à tester, je vais aussi m'y intéresser de plus près!!