Utilisation du plugin CSV_IMPORT

Comment devenir fainéant intelligemment ou comment importer un fichier CSV dans spip sans tout casser ?

Ce plugin va vous permettre d’importer et d’exporter les données de vos tables SPIP.

Après avoir longtemps cherché cette fonction c’est encore une fois IRC channel #spip qui est venu à mon secours, que je remercie en préambule => cy_altern, et sans qui je serais nul part ;-)

Avertissement : Ces explications se veulent les plus précises possibles, mais l’auteur ne saurait être tenu pour responsable en cas de mauvaise manipulation qui pourrait entrainer une perte des données de la base. Ayez dans tous les cas un dump sous la main, au cas où...

Matériel nécessaire

SPIP 1.9.2 avec les plugins

  • cfg : moteur de configuration, version : 1.7.5
  • CSVImport, version : 0.1

SPIP 2.0.0
A partir de SPIP 2.0, CSV Import requiert le plugin SPIP Bonux

-  Un fichier CSV ou autre fichier tabulaire avec les données à ajouter.

-  OpenOffice.org Calc.

Note : j’avais commencé avec Excel mais certaines fonctions n’existant pas ou ne sachant pas les utiliser..., je me suis rabattu sur OpenOffice.org Calc.

Note 2: dans la version pour SPIP 2, si l’on souhaite gérer aussi les tables des jointures (spip_auteurs_articles par ex), ajouter la ligne suivante dans le fichier mes_options.php du site:
$GLOBALS['csvimport_tables_jointures'] = true;

Installation et configuration du plugin

Après avoir récupéré le zip de CSV Import (http://files.spip.org/spip-zone/csv...), suivez la procédure standard d’installation / activation (cf la documentation officielle pour plus de détails).

L’exemple pris ici est l’importation d’articles, honnêtement je n’ai pas tout testé mais je suppose que le restant fonctionne également.

Rendez-vous sur l’icone “Edition”, sous menu “Import CSV”

Vous arrivez sur la page suivante, qui est presque vide d’ailleurs !

Cliquez sur “Administrez les tables”, une nouvelle page s’ouvre ayant cette allure-ci.

Puisque nous parlons d’articles ici et pour la bonne compréhension du tutoriel, je vous demande de cocher toutes les cases de la table “articles”, comme ceci. Si vous êtes intéressé par d’autres tables ou champs, la démarche devrait être la même il me semble.

Après avoir tout coché, il faut valider votre choix avec le bouton “Enregistrer” qui se trouve dans le bas de la page.

A ce stade un grand pas est déjà fait, mais courage nous ne sommes pas au bout de nos peines mais le jeu en vaut la chandelle...
Retournons sur “Import CSV”, nous avons à présent quelque chose de similaire. Les chiffres, dates et heures seront différents naturellement.

Pour continuer, nous allons exporter la structure cible d’ARTICLES en CSV pour choisir les champs d’importation.
Cliquez sur la droite “Télécharger”. Une nouvelle fenêtre s’ouvre.

Choisissez votre format et enregistrez le fichier sur votre disque dur.

Préparation du CSV

Lancez OpenOffice.org Calc

Cliquez sur “Fichier”, “Ouvrir”
Rendez-vous dans le dossier où vous avez sauvé le fichier précédemment.

Lors de l’ouverture il vous demande quelques précisions. Ici on renseignera le type de séparateur, ci-dessus j’avais choisi la virgule, pas de raison d’en changer, il reste à choisir le format du texte UTF-8 en l’occurrence.

Vous devez obtenir quelque chose de similaire.

Analysez bien la structure de votre tableau, c’est lui qui révèlera la forme et les champs à compléter. Il vous reste à compléter ou remplacer les colonnes, les lignes et les cellules afin de préparer le meilleur fichier CSV pour votre spip.

Importation des données dans le CSV

Ça y est vous avez vu à quoi ressemble une table Spip, il vous reste à “copier/coller” les données que vous voulez ajouter dans la table “articles”.

Ici pour l’exemple, le surtitre est le titre de l’article en anglais: le titre est le titre de l’article avec un numéro d’ordre, et le sous-titre est le titre de l’article en néerlandais, mais tout est possible.

Remarques :
-  Vous avez intérêt à remplir un maximum de champs, attention néanmoins à respecter les formats initiaux, ainsi que les automatismes d’incrémentations et autres.
-  Ce qui est à éviter absolument c’est d’indiquer des références qui n’existent pas... par exemple rubrique 4 alors qu’elle n’existe pas ou pas encore...
-  Il est naturellement possible de pousser le vice encore plus loin, avec par exemple pour classer vos titres d’articles par num_titre, de concaténer par exemple : =CONCATENER(A7;“.”;D7) dans votre tableur préféré pour obtenir un champ 01. Mon premier titre. Je laisse à votre imagination le moyen de devenir encore plus fainéant que moi à l’aide de toutes les fonctions disponibles dans votre tableur.

Exportation des données

Voici votre fichier CSV bien complété et prêt à être exporté à son tour.

Dans OpenOffice.org Calc, cliquez sur “Fichier”, “Enregistrer sous” et choisissez Type “.CSV” et cochez la case “éditez les paramètres de filtre” et précisez l’endroit de sauvegarde.

Vous arriverez alors sur un autre écran.

Encore une fois, choisissez bien les différentes options, ici en l’occurrence, Jeux de caractère : “UTF-8”, séparateur “,”. ET validez sur “OK”.

Votre fichier a été créé et est stocké sur votre disque dur.

Importation dans SPIP

Rendez-vous dans votre spip.
Retournons sur “Import CSV”.

Cliquez sur la gauche ici “spip-articles”. Une nouvelle fenêtre s’ouvre.

Indiquez où se trouve votre fichier CSV. Cliquez sur “valider”

Importation des données

A ce stade vous êtes prêt à importer mais l’importation n’a pas encore eu lieu.
Vous devez avoir un écran similaire.

Dans cette page vous pouvez encore préciser plusieurs choses, faire correspondre des champs, ... en principe votre fichier était bien préparé donc pas de raison de modifier quoi que ce soit !
Il vous reste à choisir “Ajouter” ou “Remplacer la table”

Et hop, chez moi cela a “encodé” 250 articles d’une carte d’un restaurant chinois, avec les numéros et les traductions en 3 langues sans parler des termes techniques.

J’ai “nem” plus peur d’entrer des données tabulaires dans spip :-)

updated on 2 October 2019

Discussion

44 discussions

  • 1

    Ce plugin est hyper-utile : merci !

    Mais à l’usage (avec ses surprises), j’ai rencontré certaines difficultés ; déjà, comme dit dans d’autres commentaires, ré-exporter le (même) fichier CSV avec LibreOffice pluot qu’avec Excel élimine certains soucis....

    Et puis, en utilisation courante, j’ai rencontré plusieurs fois le même souci : impossible de recharger la valeur du champ “id_xxx” si le nom de colonne n’est pas identique au nom de clé SPIP ; changer le nom de la première colonne pour y mettre le bon libellé “id_xxx” et tout marche !?

    J’aurais une suggestion, concernant le statut (issu de la fabrique) :
    -  soit il faut penser à créer une colonne y contenant une valeur correcte ’prepa’ ou ’publie’,
    -  soit il serait préférable d’y balancer une definition par defaut surchargeant celle initiale à ’0’

    D’autre part, l’insertion des dates peut poser souci, selon le format d’exportation inscrit dans le CSV : une idée..... utiliser la facilité de ’normaliser’ que Rasta m’a fait découvrir dans verifier ?

    @+
    YannX

    • J’ai testé l’import d’articles : la solution de mettre le statut à 0 par défaut n’est pas très pratique : en effet, mes nouveaux articles n’apparaissent pas en partie privée, les rédacteurs ne peuvent donc pas les manipuler pour modifier leur statut. Pourquoi ne peut-on pas importer le statut en mode ’prepa’ par exemple ? j’ai peut-être loupé une discussion à ce sujet ? Cette option n’est pas proposée dans la liste des champs (Spip 3 et dernière version du plugin). Merci.

    Reply to this message

  • Je m’apprête à installer ce plugin mais j’ai une petite question : que se passe-t-il si le fichier importé comporte à la fois des éléments déjà présents dans la table et des lignes nouvelles ?
    Est-ce qu’il va laisser intacts les articles présents sur le site et seulement y ajouter les nouveaux ?
    Merci.

    Reply to this message

  • 4

    Pour spip 3 en changeant sur la ligne 637 du fichier “csvimport_import.php” dans le répertoire exec
    icone_inline() par icone_verticale(), ca marche chez moi

    • Je viens de faire un commit sur la zone avec ces modifications pour rendre le plugin compatible SPIP3.

      La mise en page de la page d’administration des tables n’est pas top en spip 3 (désolé ça dépasse mes compétences) mais ça reste fonctionnel.

      J’ai vite fait testé les modifs sous SPIP 2.1 et SPIP 3 et je crois n’avoir rien cassé. Dites-moi si vous voyez quelque chose.

    • obiwanriko

      Bonjour
      je suis intéressé par ce plugin. où peut-on trouvé ce plugin pour SPIP 3 ? En zip ?
      PS : je peux pas utiliser la zone et le SVN : bloqué par ma DSI qui interdit également le rapatriement de fichier via clef USB :-(

    • @obiwanriko Euh... On peut le trouver en cliquant sur le lien en haut de la page ? :-P

    • obiwanriko

      oupsss merci. J’avais pas lu les compatibilités juqu’au bout.... J’avais vu que spip 2... lol
      Sinon avez-vous déjà entendu que l’on peut utiliser ce plugin pour importer des données dans des champs d’articles créés avec le plugin “Champs extra” ?

    Reply to this message

  • Merci bien, pour ne pas avoir de backslashes devant les apostrophes ligne 573 inc/csvimport.php, retirer le addslashes fonctionne pour mon cas.
    $what[$key] = addslashes($ligne[$assoc[$kc]]);
    $what[$key] = $ligne[$assoc[$kc]];

    Reply to this message

  • 1

    Bonjour,

    je cherche à exporter des tables relativement lourdes et je tombe inlassablement sur

    “Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    Please contact the server administrator, postmaster@www and inform them of the time the error occurred, and anything you might have done that may have caused the error.
    More information about this error may be available in the server error log.”

    Une idée ?

    • Cela m’est arrivé aussi : deux solutions possibles :
      -  modifier le max_execution_time dans apache.*../bin/php.ini
      -  au contraire de la sauvegarde, je ne suis pas sûr que faire un relance l’importation jusqu’a la fin....

      YannX

    Reply to this message

  • Bonjour,
    Je suis très intéressé par ce plugin, je tente de créer un site de généalogie tout en spip, et regarde comment je peux importer un fichier gedcom en csv, après plusieurs tentafives bien entendu j’ai échoué,
    peut-être:
    -  que le plugin n’est pas adapté
    -  que mon site ne corresponds pas
    Il y a de toutes façons quelque chose, y a-il une possibilité d’adapter,
    Merci

    Reply to this message

  • 1

    une version pour spip 3 est-elle prévue?

    • je me joins à la demande précédente :
      va-t-il y avoir une version de CSV Import compatible avec SPIP 3 ?

    Reply to this message

  • 1

    Bonjour,

    impossible pour moi d’ajouter mes données à la table j’obtiens sans cesse ce message d’erreur en cliquant sur “ajouter les données”:

    Fatal error: Call to undefined function bouton_block_invisible() in C:\wamp\www\FFRS\plugins\csv_import_2_0\exec\csvimport_import.php on line 204

    Quoi faire ?

    • Réponse :

      Passage de la 0.2.1 à la 0.2.2 sauf qu’à présent nouvelle erreur : Ligne 1 :: Ajout impossible ! :: Array ( [id_article] => .....

    Reply to this message

  • 6
    Francky

    Bonjour,

    J’ai un problème avec les caractères accentués.
    J’exporte ma base en csv classique avec des virgules. Je la récupère avec Open Office version 3.2.0.

    Si la plupart des caractères accentués sont bien interprété lorsque j’indique le format UTF-8 à Open office
    quelques caractères comme les (à, oe, û, ù, oe) et d’autres que j’oublie très certainement ne sont pas reconnus.
    J’ai des carrés à la place.

    Je pensais que le utf-8 réglait tous ces problèmes mais....

    Voilà, hormis ce soucis, ce plugin me sauve la vie !!!!
    Un grand merci

    (spip version 2.0.9 --- Version plugin : 0.2 [36128])

    • Je reviens sur mon message du 29 mars pour certains caractères accentués.
      A priori le soucis venait de easy php et non pas du plug ni de spip.
      Désolé si je vous ai fais perdre du temps et encore merci pour cette joli contrib !

      Francky

    • Fabienne

      Bonjour,

      Je rencontre également un souci du même type, mais uniquement avec les apostrophes qui sont systématiquement précédé d’un \ après importation.

      Mon EasyPHP est paramétré correctement à priori.

      Seul le remplacement de ces apostrophes par leur unicode permet un affichage correct, mais celui-ci reste malheureusement en toutes lettres dans les champs de mes articles.

      Avec mes remerciements pour votre attention.
      Fabienne

    • Bonjour
      Le sujet date un peu mais j’ai moi aussi le soucis avec les apostrophes.
      Quelqu’un à trouvé une solution à ce problème ?

    • En fait j’ai contourné le problème en passant par du csv généré par open office (bizarrement j’avais moins de soucis qu’avec excel) et en passant directement par PhpMyAdmin.

    • J’utilise déja openoffice
      Par contre, ton idée est bonne, je vais faire ca directement dans phpmyadmin...

      Merci pour ta reponse

    • Bonjour,

      Pour les apostrophes, voir la réponse que je viens de faire à jacangers

      Le Linuxien masqué

    Reply to this message

  • 1

    j’ai un problème à l’import d’articles.
    Je respecte toutes les consignes mais immanquablement mes apostrophes ’ sont remplacées par un signe \

    corriger cela à la main quand on importe des centaines d’articles est fastidieux, une consigne ?

    merci

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom