IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Transition Drupal vers Wordpress


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut Transition Drupal vers Wordpress
    Bonsoir à tous,
    c'est tout en désespoir que je vous contacte.
    Je suis étudiant en droit des NTIC, et je suis chargé, avec un autre étudiant, de remodeler le site du Master, en le passant de Drupal à Wordpress. Pour le moment nous avons mis en ligne une nouvelle version du site web (donc nouvelle base de données), et fait une partie archives du site (qui renvoie vers une autre base de données).
    Le site étant assez célèbre, c'est avec dépit que nous avons constaté que nous avons perdu, (évidemment), le référencement du site, tel qu'il l'était auparavant, et toutes les anciennes promotions me tapent sur les doigts, et les profs se mettent maintenant à me hurler dessus... bref j'en peux plus!

    NB : A savoir que je suis un peu un newbie en SQL...

    Bref, voici ma question, est-il possible de passer de drupal à wordpress?
    J'ai lu à droite à gauche que c'était possible.

    J'ai même lu qu'il existait un script drupal_to_wordpress.sql
    mais apparemment il faudrait que les deux bases de données se trouvent sur le même serveur, sous un nom différent ou quelque chose comme ça... La BDD de l'ancien site se trouve chez Lost-Oasis, et la nouvelle se trouve chez OVH. Mais pour le moment je la teste chez moi (Hébergement 1and1).
    Est-ce que je pourrais avoir la marche à suivre ? Je me familiarise à vitesse grand V au SQL, je fais beaucoup d'efforts, essayez de me parler comme si vous parliez à un enfant (ou presque...)

    Merci de m'apporter votre aide, et n'hésitez pas à me demander plus d'informations!

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut Méprise
    Saluton,
    Drupal, comme Wordpress, sont des gestionnaires de contenu (CMS).
    Probablement qu'il s'adossent, chacun, à une base de données, probablement aussi que celles-ci sont gérées avec MySQL, mais là je n'ai aucune certitude.
    Penser migrer la structure et les données d'une base de données conçue pour Drupal vers une base de données conçue pour Wordpress n'est pas impossible, mais m'apparaît a priori assez improbable.
    Au vu de ce que contient le script drupal_to_wordpress.sql, il s'agit, exclusivement, d'alimenter les tables wp_categories, wp_posts, wp_post2cat et wp_comments de la base de données de wordpress à partir des tables node, node_revisions, term_node et comments de la base de données de Drupal.
    N'ayant jamais pratiqué aucun de ces deux CMS, je ne peux guère t'en dire d'avantage.
    Reste (et ce n'est pas la moindre chose) à savoir si les deux bases de données MySQL, situées sur des serveurs différents, sont dans des versions compatibles.
    Il faudrait faire un mysqldump de la base Drupal pour dupliquer la base sur le serveur MySQL de Wordpress (avec les adaptations éventuelles nécessaires pour passer d'une version MySQL à l'autre) puis exécuter le script drupal_to_wordpress.sql.
    Ce script commençant par vider les 4 tables de la base Wordpress, une sauvegarde préalable de celle-ci s'impose.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    Donc pour le moment,
    j'ai transféré (en quelques 10 heures, à la main, quasi paragraphe par paragraphe) la base sql de l'ancien site sur la nouvelle base de données ce qui me donne quelque chose comme :
    drupal5_node... etc
    et des
    wp_comments...
    En gros j'ai toutes les tables sur la même bdd.

    J'ai utilisé ce script en remplaçant les noms des BDD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    # Changelog
     
    # 02.06.2009 - Updated by Mike Smullin http://www.mikesmullin.com/development/migrate-convert-import-drupal-5-to-wordpress-27/
    # 05.15.2007 - Updated by D’Arcy Norman http://www.darcynorman.net/2007/05/15/how-to-migrate-from-drupal-5-to-wordpress-2/
    # 05.19.2006 - Created by Dave Dash http://spindrop.us/2006/05/19/migrating-from-drupal-47-to-wordpress/
     
    # This assumes that both wordpress and drupal are in separate databases. The wordpress database is called "wordpress" and the Drupal database is called "drupal"
     
    # first, nuke previous content in wordpress database
    TRUNCATE TABLE wordpress.wp_comments;
    TRUNCATE TABLE wordpress.wp_links;
    TRUNCATE TABLE wordpress.wp_postmeta;
    TRUNCATE TABLE wordpress.wp_posts;
    TRUNCATE TABLE wordpress.wp_term_relationships;
    TRUNCATE TABLE wordpress.wp_term_taxonomy;
    TRUNCATE TABLE wordpress.wp_terms;
     
    # categories
    INSERT INTO wordpress.wp_terms (term_id, `name`, slug, term_group)
    SELECT
     d.tid, d.name, REPLACE(LOWER(d.name), ' ', '_'), 0
    FROM drupal.term_data d
    INNER JOIN drupal.term_hierarchy h
     USING(tid)
    ;
     
    INSERT INTO wordpress.wp_term_taxonomy (term_id, taxonomy, description, parent)
    SELECT
     d.tid `term_id`,
     'category' `taxonomy`,
     d.description `description`,
     h.parent `parent`
    FROM drupal.term_data d
    INNER JOIN drupal.term_hierarchy h
     USING(tid)
    ;
     
    # posts; keeping private posts hidden
    INSERT INTO wordpress.wp_posts (id, post_date, post_content, post_title, post_excerpt, post_name, post_modified, post_type, `post_status`)
    SELECT DISTINCT
     n.nid `id`,
     FROM_UNIXTIME(n.created) `post_date`,
     r.body `post_content`,
     n.title `post_title`,
     r.teaser `post_excerpt`,
     IF(SUBSTR(a.dst, 11, 1) = '/', SUBSTR(a.dst, 12), a.dst) `post_name`,
     FROM_UNIXTIME(n.changed) `post_modified`,
     n.type `post_type`,
     IF(n.status = 1, 'publish', 'private') `post_status`
    FROM drupal.node n
    INNER JOIN drupal.node_revisions r
     USING(vid)
    LEFT OUTER JOIN drupal.url_alias a
     ON a.src = CONCAT('node/', n.nid)
    WHERE n.type IN ('post', 'page')
    ;
     
    # post -> category relationships
    INSERT INTO wordpress.wp_term_relationships (object_id, term_taxonomy_id)
    SELECT nid, tid FROM drupal.term_node;
     
    # category count updating
    UPDATE wp_term_taxonomy tt
    SET `count` = (
     SELECT COUNT(tr.object_id)
     FROM wp_term_relationships tr
     WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
    );
     
    # comments; keeping unapproved comments hidden
    INSERT INTO wordpress.wp_comments (comment_post_ID, comment_date, comment_content, comment_parent, comment_author, comment_author_email, comment_author_url, comment_approved)
    SELECT nid, FROM_UNIXTIME(timestamp), comment, thread, name, mail, homepage, status FROM drupal.comments;
     
    # update comments count on wp_posts table
    UPDATE `wp_posts` SET `comment_count` = (SELECT COUNT(`comment_post_id`) FROM `wp_comments` WHERE `wp_posts`.`id` = `wp_comments`.`comment_post_id`);
     
    # fix breaks in post content
    UPDATE wordpress.wp_posts SET post_content = REPLACE(post_content, '', '');
    # fix images in post content
    UPDATE wordpress.wp_posts SET post_content = REPLACE(post_content, '"/files/', '"/wp-content/uploads/');
    Sur mon site test : reduisonslafracturenumerique.joyeuxfix.fr
    je me retrouve avec les catégories, certaines pages, les posts apparaissent, mais les auteurs n'apparaissent pas, et certaines pages ne devraient pas être affichées (telles que les pages sur les autheurs)
    Est-ce que quelqu'un saurait d'où pourrait venir le problème? où dois je faire une correspondance?
    A savoir que ce script était prévu pour Wordpress 2.7 et que j'ai Wordpress 2.9, est-ce que quelque chose dans les tables aurait changé?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    Bon j'ai réussi à transférer tous mes articles, ainsi que les catégories. Mais j'ai perdu tous les mots clés, ainsi que tous les auteurs : est-ce que vous sauriez comment les récupérer ? A savoir que pour de nombreux articles il y a du multi auteurs...

    Pour le moment j'ai opéré de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRUNCATE TABLE tempdb.wp_comments;
    TRUNCATE TABLE tempdb.wp_links;
    TRUNCATE TABLE tempdb.wp_postmeta;
    TRUNCATE TABLE tempdb.wp_posts;
    TRUNCATE TABLE tempdb.wp_term_relationships;
    TRUNCATE TABLE tempdb.wp_term_taxonomy;
    TRUNCATE TABLE tempdb.wp_terms;
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    INSERT INTO tempdb.wp_terms (term_id, `name`, slug, term_group)
    SELECT
     d.tid, d.name, REPLACE(LOWER(d.name), ' ', '-'), 0
    FROM tempdb.term_data d
    INNER JOIN tempdb.term_hierarchy h
     USING(tid)
    ;
     
    INSERT INTO tempdb.wp_term_taxonomy (term_id, taxonomy, description, parent)
    SELECT
     d.tid `term_id`,
     'category' `taxonomy`,
     d.description `description`,
     h.parent `parent`
    FROM tempdb.term_data d
    INNER JOIN tempdb.term_hierarchy h
     USING(tid)
    ;
    Pour importer le contenu des articles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO
        tempdb.wp_posts (id, post_date, post_content, post_title,
        post_excerpt, post_name, post_modified)
    SELECT DISTINCT
        n.nid, FROM_UNIXTIME(created), body, n.title,
        teaser,
        REPLACE(REPLACE(REPLACE(REPLACE(LOWER(n.title),' ', '-'),'.', '-'),',', '-'),'+', '-'),
        FROM_UNIXTIME(changed)
    FROM tempdb.node n, tempdb.node_revisions r
    WHERE n.vid = r.vid
    Pour récupérer les "relations" entre les articles et les catégories :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO tempdb.wp_term_relationships (object_id, term_taxonomy_id)
    SELECT nid, tid FROM tempdb.term_node;
    Pour mettre à jour le nombre de catégories :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE wp_term_taxonomy tt
    SET `count` = (
     SELECT COUNT(tr.object_id)
     FROM wp_term_relationships tr
     WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
    );
    Pour garder le statut "non-approuvé" de certains commentaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO tempdb.wp_comments (comment_post_ID, comment_date, comment_content, comment_parent, comment_author, comment_author_email, comment_author_url, comment_approved)
    SELECT nid, FROM_UNIXTIME(timestamp), comment, thread, name, mail, homepage, status FROM tempdb.comments;
    Pour mettre à jour les commentaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE `wp_posts` SET `comment_count` = (SELECT COUNT(`comment_post_id`) FROM `wp_comments` WHERE `wp_posts`.`id` = `wp_comments`.`comment_post_id`);
    Pour réparer les "ruptures" éventuelles d'articles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE tempdb.wp_posts SET post_content = REPLACE(post_content, '', '');
    Pour actualiser le chemin des fichiers images :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE tempdb.wp_posts SET post_content = REPLACE(post_content, '"/sites/default/files/', '"/wp-content/uploads/');

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Certes, tes messages contiennent des requêtes SQL.
    Mais je pense que tu devrais plutôt t'adresser à la communauté Wordpress pour résoudre ton problème qui n'est pas spécifique à MySQL mais bel et bien à Wordpress.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/09/2012, 12h18
  2. « Le tactile est une technologie de transition », mais vers quoi ?
    Par Gordon Fowler dans le forum Débats sur le développement - Le Best Of
    Réponses: 27
    Dernier message: 29/11/2011, 14h51
  3. transition https vers http
    Par Florent08800 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 19/09/2006, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo