Restaurer base de données sur Drupal

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour, je vous explique mon problème, j'ai deux sites à ma disposition. L'objectif est de restaurer les données du site A sur le site B. Bien entendu j'ai déjà sauvegarder la base de données du site A sur un fichier x.sql.gz. qui quand je l'extrait est un fichier .txt.

Maintenant il faudrait que je restaure cette base sur le nouveau site. Pour cela j'ai installé EasyPHP. En faisant click droit => Administrer je tombe sur une page locale. Je clique sur +Administrer MySQL avec PhpMyAdmin.

J'arrive ensuite sur une page où sur la gauche je retrouve touts les spips du site A (spip_articles...).

Vu que je n'ai fait aucun changements j'imagine que ces spips sont ceux d'origine au logiciel, alors que ce que je désire c'est d'exporter les spips du fichier x.sql.gz dans le nouveau site, j'aimerai que les contenus de spip_article par exemple, soit celui du site A et non celui d'origine de easyphp.

Ce que je désire c'est de pouvoir transférer toutes ces données que pourrait gérer automatiquement Drupal, via un module par exemple sur le nouveau site afin de ne pas avoir à les récrire.

Je vous remercie de votre attention et j'attends vos réponses avec impatience.

Forum : 

Vu ce que tu dis, je pense qu'on parle d'autre chose que d'une simple restauration de base.

Il s'agirait de migrer un site sous SPIP vers un site Drupal, non ?

Dans ce cas il faudrait passer par un export en CSV (ou XML) puis l'utilisation de Feeds.

C'est exactement ça. Le site initial était un site sous SPIP et pour le nouveau il a été décidé de le créer entièrement via Drupal. Comme il y avait des données par exemple dans le bloc article dans le site initial, on désire le reporter sur le nouveau site car il possède également une rubrique article.

Je te remercie de ta réponse mais étant un réel débutant sur Drupal ou sur ce qui touche en informatique, pourrais-tu me décrire plus précisément ce que je dois faire quand tu me parles d'un export CSV ou Feeds ?

Je te remercie d'avance.

L'export CSV de la base SPIP permettra de mettre sous un format texte avec des séparations les différents champs (SPIP), auxquels on va faire correspondre, via le module Feeds, les champs identiques (DRUPAL).

Il faut donc :

  • Installer le module Feed, et les modules associés (car il faut pouvoir gérer aussi un import programmé dans le temps, donc je crois me souvenir qu'il y a au moins le module date en plus) dans le site Drupal
  • Créer dans Drupal un type de contenu qui acccueillera les données en provenance de SPIP
  • Exporter, depuis SPIP, les données que l'on souhaite intégrer dans Drupal sous format CSV
  • Créer, dans Feed, le mapping de l'import, c'est-à-dire la correspondance entre les champs du fichier CSV et les champs du contenu créés à l'étape 2
  • Une fois que c'est fait, lancer l'import

Deux remarques :
1) Tester le mapping sur un fichier restreint afin de vérifier que tout va pour le mieux,
2) un problème fréquent qui peut empêcher l'import est le codage du fichier CSV. Si c'est le cas, il doit être impérativement converti en UTF-8 sans bom via un programme comme notepad++ par exemple.

Merci de ta réponse je crois en effet que ta solution correspond à ce que je cherche, je viens de lire ce qu'était le module Feed et je pense que c'est de ça dont j'ai besoin.

Je viens de réaliser les deux premières étapes que tu m'as mexpliqué, néanmoins je rencontre quelques problèmes, je ne vois pas comment exporter depuis SPIP, où faut-il se rendre ? J'ai pu voir qu'après avoir cliqué sur Administration de EasyPHP, en me rendant sur Administrer MySQL avec PhpMyAdmin je trouve un onglet Exporter ?

Si c'est bien ça est-ce que je pourrais avoir plus d'explication parce que je ne vois pas comment de cette page lui faire comprendre qu'il faut faire le lien, c'est à dire exporter les données sur Drupal sur mon site, ça n'est spécifié nul part.

De plus comment configurer le module Feed parce qu'il n'y a pas de bouton configurer dans le module, du coup je ne vois pas comment faire la correspondance.

Désolé de te demander toutes ces précisions et je te remercie grandement de ta réponse car je sens que je touche au but.

Bonjour,

L'export de la base SPIP donne un fichier (CSV) qu'il faut sauvegarder quelque part sur votre disque. Vous l'appellerez lors de la phase de mapping. Il semble exister un plugin d'export CSV pour SPIP, faites des recherches.

Dans la partie Construction de site vous avez une option Feed importers qui vous permet de créer votre import.

Vous devez également consulter la documentation en ligne qui accompagne le module :

http://drupal.org/node/622698

Eh bien à ce que l'on m'a dit, Feeds sert à importer des flux d'informations et non une base de données MySQL. Sur mon EasyPHP j'ai bien touts mes SPIP mais je n'arrive par contre pas à faire la suite c'est à dire faire correspondre les champs :

par exemple si dans un de mes spips j'ai article et qu'il possède les champs titre(txt) et un ID (entier) je ne vois pas comment procéder pour le faire correspondre avec un type de contenu que j'ai créer : article en créant les champs identiques que précédemment, je n'arrive toujours pas à faire le transfert.

J'essaie en ce moment de creuser encore un peu et je vous tiens au courant car vous m'avez parlé d'un plugin d'export CSV mais je ne le trouve pas.

Je crois que vous n'avez pas compris comment se présente votre problème. Il n'est pas question de faire correspondre votre base existante MySQL SPIP avec votre base MySQL DRUPAL nouvellement créée, mais d'importer à l'intérieur de cette dernière les éléments qui composent votre base MySQL SPIP.

Pour cela, il est impératif que les deux plate-formes aient un langage commun et ce langage est le fichier CSV. L'export de votre base SPIP transforme en un flux d'informations intelligibles par le module FEED ses données, ce qui permet de les incorporer, sans perte de qualité ni de contenu, dans la base DRUPAL.

Si vous avez un champ titre (texte, 80 caractères par exemple) sous SPIP, le contenu dans Drupal qui accueillera votre export devra comporter également un champ Titre (texte, 80 caractères), un champ ID (entier, 8 caractères) sous SPIP, vous devrez de même avoir un champ de cette nature dans votre contenu DRUPAL. TOUS LES CHAMPS exportés de Spip et que vous souhaitez conserver sous DRUPAL doivent avoir une correspondance dans celui-ci.

Le module Feed ne sert qu'à créer la correspondance entre les deux ensembles, champ par champ.

Un Plugin d'export CSV pour SPIP (instantané sur Google) : http://www.webdesigneuse.net/carnet/index.php/post/2008/03/18/7-export-c...

Désolé ne pas vous avoir répondu plus tôt je suis totalement débordé par mon travail, j'ai pu lire le fichier "lisez-moi", une fois en possession du fichier, je dois l'extraire dans le dossier plugin du site, je n'ai pas encore trouver ce dossier mais je vais le chercher. Ensuite il est dit qu'il faut aller "Configuration" -> "Gestion des plugins", activer le plugin "Export CSV", l'espace privé fait référence à Drupal ou l'espace privé du site ?

*étant un réel débutant sur Drupal ou sur ce qui touche en informatique, *

D'expérience, le déménagement SPIP -> Drupal n'est pas un exercice réalisable avec un bagage aussi léger. Même un informaticien habitué à Drupal a des difficultés. Et je sais de quoi je parle...

J'ai à présent un problème c'est au moment d'importer la base de données j'ai ce message d'erreur :

Erreur

requête SQL: Documentation

SELECT comment
FROM phpmyadmin.pma_column_info
WHERE db_name = 'web1db1'
AND table_name = ''
AND column_name = '(db_comment)'

MySQL a répondu: Documentation

1100 - Table 'pma_column_info' non verrouillée: utilisez LOCK TABLES

Et du coup ça n'a pas importé ma base correctement.