A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Comme beaucoup de personnes, j'ai voulu récupérer les notices de mon ancien logiciel de gestion de bibliothèque. Vu qu'il ne prévoyait pas de conversion vers la norme Unimarc, j'ai dû passer par une étape intermédiaire : un fichier Excel. Remarque importante : je parle ici de la conversion de "texte" vers Unimarc ISO 2709 et ensuite vers PMB. N.B. N'oubliez pas que vous pouvez télécharger un exemple commenté en Excel Données de départ : un «tableur» qui contient les notices de votre ancienne base de données. Pour simplifier le test et mes explications, j'ai réduit le nombre de notices et de champs dans chaque notice. Le fichier Excel dont je vous parlerai comprend 5 lignes (donc 5 notices), et 6 colonnes A : ISBN D : nom de l'auteur B : Titre E : élément rejeté (= prénom de l auteur) C : éditeur F : (j'explique plus tard son utilité - voir 3 a) N.B Il est bien évident qu'en situation réelle, on importe davantage de champs - sinon cela ne vaut guère le coup. Voici les différentes étapes à suivre : 1) Un peu de lecture Lisez dans le manuel de l'administrateur de PMB les pages consacrées au format Unimarc (entre autres, le chapitre 11-4). C est une étape indispensable!! Cherchez si nécessaire d'autres infos sur le Wiki ou sur le Net. 2) Adapter le fichier params.xml à votre base de données Dans les dossiers de PMB, cherchez le répertoire admin/convert/imports/text2unimarciso et le fichier params.xml qui s'y trouve. N.B. Faites une copie de params.xml avant de le manipuler - ainsi vous aurez toujours l'original sous la main 2 - a) Ouvrez le bloc-notes, et modifiez le fichier params.xml comme expliqué ci-dessous, afin d'avoir une concordance entre les colonnes de votre fichier Excel et les champs Unimarc Rappel : la 1 e colonne de mon exemple contient l ISBN, la 2 e colonne contient le titre de l ouvrage. Grâce aux quelques lignes qui suivent, vous établissez un lien - entre la 1e colonne du tableur et le code Unimarc 010$a (qui est précisément celui de l ISBN) - entre la 2 e colonne du tableur et le code Unimarc 200$a (qui est précisément celui du titre) <col id="1"> <field>010</field> <col id="2"> <field>200</field> N.B. Voir exemple plus détaillé à la fin - j'ai voulu garder le texte «en continu» pour la clarté 2 - b) Modifiez aussi dans ce fichier params.xml le séparateur de champ (la ligne <separator>;</separator>). Il faut qu elle contienne un point-virgule, ce qui n est pas le cas à l'origine.
A.-M. Cubat PMB - Import de notices à partir d un tableur Page 2 3) Précautions à prendre pour éviter d éventuelles pertes de données lors du transfert 3 - a) Lors de mes premiers essais, j'ai constaté que je perdais lors du transfert le dernier caractère du dernier champ de chaque ligne, sauf si cette ligne se terminait par un point-virgule. La solution la plus simple est la méthode que j'ai baptisée du nom poétique (!!) de "azertyuiop". Vous ajoutez une colonne à droite de la dernière colonne "réelle" de données. Cette colonne supplémentaire contiendra un mot quelconque, par exemple "azertyuiop" : un mot qui ne risque vraiment pas de se trouver dans les données. Pour reprendre l'exemple simplifié ci-dessus, si vous avez 5 colonnes "réelles" de données (donc de A à E), vous ajoutez le mot "azertyuiop" dans la cellule F1, et vous le copiez-collez dans les cellules suivantes (F2, F3, F4...) jusqu'à la dernière ligne de données. Le but est de faire croire à Excel que le fichier à convertir en format.csv comprend 6 colonnes et non pas 5. (j'explique ce qu'est le format.csv au point 4). Vous ne ferez bien sûr aucune référence à cette colonne supplémentaire dans params.xls (voir 2 - a et aussi tout à la fin) Ainsi, même si vous perdez le dernier caractère de chaque ligne, cela n'aura aucune conséquence puisque de toute façon la dernière colonne ne sera pas importée dans PMB. (Je reparle un peu plus loin de la méthode "azertyuiop" - au point 4) 3 - b) Lors de mes essais, j'ai aussi constaté que je perdais lors du transfert la première notice - elle disparaissait aux "oubliettes" - sans doute parce que le programme était paramétré pour fonctionner dans un mode analogue à celui de Dbase : la 1e ligne n'est pas censée contenir des données, elle est censée contenir les titres des champs. Il y a 2 manières de remédier à la situation : ne les cumulez pas, une seule suffit, mais il en faut au moins une! Vous dédoublez la première notice dans le fichier Excel : elle s'y trouvera donc deux fois, aux lignes 1 et 2. (il suffit d'insérer une ligne au début de la feuille, et de faire un copier-coller de la première ligne) Rassurez-vous, elle n'arrivera qu'une fois dans PMB, vu que la 1e notice se perd lors du processus de conversion. Vu que votre fichier Excel contiendra probablement un nombre assez élevé de colonnes (sûrement plus que dans mon exemple), employez la première ligne du tableau Excel pour les titres de colonnes, cela vous facilitera l existence. o Puisque la 1e ligne se perd lors du transfert, les titres des colonnes n'arriveront pas dans PMB, mais vous aurez eu l'avantage de la clarté en Excel. o C'est la solution que j'emploie personnellement. 3 - c) Vérifiez aussi qu'il n'y ait aucun point-virgule dans les données que vous voulez exporter. Il suffit de prendre l'option "édition - recherche", et de demander à Excel de vérifier s'il y a des points-virgules quelque part (on ne sait jamais), et de les remplacer le cas échéant par une virgule. En effet, puisque le point-virgule servira de séparateur entre les champs, sa présence dans le texte va poser problème. Tous les points-virgules qui seraient dans les notices doivent disparaître avant le transfert!
A.-M. Cubat PMB - Import de notices à partir d un tableur Page 3 4. Sauvegarder et convertir le fichier Excel : passer du fomat.xls au format.csv Le but est d'obtenir un fichier texte, avec un point-virgule comme séparateur de champ (c'est ce que vous aviez précisé dans params.xml). Vous prenez l'option "enregistrer sous" - en format CSV, et vous obtenez ainsi un fichier avec des points-virgules entre chaque champ - mais pas en fin de ligne. Cette absence de point-virgule en fin de ligne peut-elle poser problème? Sûrement pas si vous avez employé la méthode "azertyuiop" décrite ci-dessus (3 - a). o En effet, puisque la colonne la plus à droite ne sera pas importée dans PMB, on peut «se permettre» de perdre le dernier caractère de chaque ligne, cela n'aura aucun impact. o Par contre, vous aurez des problèmes si la dernière colonne contient des «vraies» données, et s'il n'y a pas de point-virgule en fin de ligne. En outre, la deuxième phase de la méthode "azertyuiop" vous permet même de supprimer ce mot bizarre (azertyuiop) et d'avoir automatiquement des points-virgules en fin de ligne après le changement de format. C'est tout simple : après la conversion en format.csv, il vous suffit d'ouvrir le fichier dans le bloc-notes, et d'employer la fonction «remplacer tout» (Menu édition - remplacer tout) Vous remplacez le mot "azertyuiop" par rien du tout, et ce mot disparaîtra. Mais toutes les lignes se termineront quand même par un point-virgule, puisque Excel en avait créé un entre les colonnes E et F. N.B. C est pourquoi je vous avais conseillé de mettre dans cette colonne un mot comme "azertyuiop" : un mot qui ne risque pas de se retrouver dans les données. Le problème est donc réglé d'une autre manière, et vos notices ont repris un air plus sérieux ("azertyuiop" a disparu). Il n'y a plus de colonne supplémentaire, mais malgré tout, il n'y a aucun risque de perte de données, vu que chaque ligne se termine par un point-virgule, vous pouvez en être sûr. Au passage, vérifiez quand même qu'il n'y ait pas en fin de fichier une série de lignes avec uniquement des points-virgules, cela créerait des notices vides. Excel réagit parfois bizarrement... 5) Dans PMB : conversion de fichier externe et import de notices Vous allez dans l'onglet administration, vous lancez une conversion de fichier externe, vous parcourez le répertoire afin de trouver votre fichier.csv, et vous précisez conversion de texte vers unimarc iso 2709. Ensuite il ne vous reste plus qu'à lancer l'import des notices ou à télécharger le fichier converti. Et vous verrez, cela fonctionne très bien!! C'est le moment magique où vous vous direz : «Victoire! Je récupère enfin tout ce que j'ai catalogué précédemment!»
A.-M. Cubat PMB - Import de notices à partir d un tableur Page 4 6) Perfectionner votre technique Lorsque vous «jonglerez» avec cette technique, je vous conseille de retourner éventuellement dans Excel, afin d'y ajouter des champs. C'est fort utile, surtout si le programme que vous utilisiez auparavant était moins riche que PMB C'est mon cas : le logiciel de gestion de bibliothèque que j'employais précédemment n'était pas aussi complet que PMB, certains champs Unimarc n'existaient pas (exemple : fonction : auteur, langue, cote Dewey, etc). Il est plus facile d'ajouter ces champs dans le fichier Excel avant de lancer la conversion, plutôt que de laisser des notices incomplètes en PMB ou de devoir les reprendre une par une - d'autant plus que dans la majorité des cas, il s'agit d'ajouter en Excel une colonne dont le contenu sera (presque) le même dans toute une série de lignes. 7) Conseil final Un dernier conseil : faites vos premiers essais avec 4-5 notices, 5-6 champs, et lorsque vous êtes satisfait du résultat obtenu, augmentez petit à petit le nombre de champs et de notices. N'essayez pas de tout de suite de récupérer vraiment votre ancienne base de données. Cela vous permettra de vérifier facilement si tout est OK, s'il n'y a pas de doublon malgré tout. Vous pourrez augmenter le nombre de notices importées à chaque passage plus tard. N'importez quand même pas trop de notices en une fois, je me limite en général à 100, 150 notices à chaque passage. Bon transfert de données! N.B. N'oubliez pas que vous pouvez télécharger un exemple commenté en Excel
A.-M. Cubat PMB - Import de notices à partir d un tableur Page 5 Annexe : Extrait du fichier params.xml (la partie modifiée - gardez le reste tel quel) Voici les lignes qui correspondent à mon exemple, et qui établissent le lien entre les colonnes de Excel et les codes Unimarc des données. colonne 1(A) = isbn (code Unimarc 010 $a) lignes 21-24 colonne 2 (B) : titre (code Unimarc 200 $a) lignes 25-28 colonne 3 (C) : éditeur (code Unimarc 210 $c) lignes 29-32 colonnes 4 et 5 (D et E) : nom et prénom de l'auteur (codes Unimarc 700 $a et 700 $b) lignes 33-36 L'ordre dans lequel vous mentionnez les colonnes dans params.xml n'a pas d'importance - mais il est évidemment plus simple de les citer dans l'ordre correspondant à celui du fichier Excel - vous risquez moins de vous tromper. 14. <step type="texttoxml"> 15. <!-- Conversion texte en unimarc --> 16. <trootelement>unimarc</trootelement> 17. <separator>;</separator> 18. <delimitedby></delimitedby> 19. <escaped>no</escaped> 20. <cols> 21. <col id="1"> 22. <field>010</field> 23. 24. 25. <col id="2"> 26. <field>200</field> 27. 28. 29. <col id="3"> 30. <field>210</field> 31. <subfield>c</subfield> 32. 33. <col id="4,5"> 34. <field>700</field> 35. <subfield>a,b</subfield> 36. 37. </cols> 38. </step> Autres exemples d'import de données - les numéros des colonnes sont arbitraires Editeur, lieu et année de parution Nombre de pages <col id="10,11,12"> <field>210</field> <subfield>c,a,d</subfield> <col id="13"> <field>215</field> Cote Dewey <col id="14"> <field>676</field> Cote et numéro de code-barres de l'exemplaire <col id="15,16"> <field>995</field> <subfield>f,k</subfield>