[Zotero] Modifier en masse le lien des fichiers attachés

Zotero autorise le stockage des PDFs numérisés dans un répertoire distinct de celui de la base de données. Cette solution qui a des avantages (limitation du volume de données à synchroniser, et libre organisation son arborescence) présente un inconvénient majeur en terme de fragilité : une infime modification de l’arborescence de travail rendra définitivement obsolète le lien entre vos centaines de références bibliographiques et leurs documents. Voici quelques notes, conseils et précautions à prendre pour qui souhaite réparer sa base de données.

Préambule

Sous Zotero, chaque référence bibliographique peut se voir attaché un ou plusieurs documents, par exemple l’exemplaire PDF de la référence en question. Il existe quatre types d’association, que l’on peut classer en deux catégories. Dans un cas, on archive dans le répertoire de fonctionnement de Zotero la forme et le contenu des données à un instant t  (type ‘Capturer la page courante’ et ‘Stocker une copie du fichier’), dans l’autre on se contente d’enregistrer la localisation du document qu’il soit sur internet ou sur le disque dur (type ‘Enregistrer un lien vers la page courante’ et ‘Lien vers un fichier’).

Officiellement, on nous invite prudemment à préférer le première catégorie d’associations (cf. Documentation) :

Le lien vers les fichiers est fragile : si vous déplacez le fichier de son dossier d’origine ou si vous le renommez, le lien ne fonctionnera plus. Pour un stockage à long terme, stocker une copie du fichier est préférable.

Mise en situation

Je suis de ceux qui ont préféré dissocier la base de données Zotero de l’endroit où sont rangés mes PDFs numérisés, j’ai donc opté pour le principe des liens vers les fichiers, et je me suis précisément heurté au problème évoqué ci-dessus : le jour où j’ai trouvé indispensable de mettre de l’ordre dans l’organisation de mes dossiers de travail, cela n’a pas été au goût de Zotero. Pour remédier à cela, modifier et ainsi réparer les liens qui se sont cassés, il faut agir directement sur la base de données (source ici).

Attention, si cette opération est simple, elle est cependant très sensible car peut corrompre la base, et rendre tout à fait inutilisable vos données bibliographiques. Il est vivement recommandé de ne rien entreprendre que vous ne sachiez réparer.

Réparer les liens aux références cassés, mode d’emploi

  1. Effectuez une copie de la base de données (‘zotero.sqlite’), copie qui vous servira à remplacer l’original en cas d’échec et/ou de corruption de la base ;
  2. Téléchargez et installez l’extension SQLite Manager pour Firefox, utilitaire qui nous servira à manipuler la base de donnée ;
  3. Vérifiez qu’aucune instance de Zotero ne soit ouverte, et ouvrez votre base de données (qui se situe par défaut dans le répertoire Zotero de votre profil Firefox) avec SQLite Manager ;
  4. Sélectionnez dans le panneau latéral de gauche, la table nommée ‘itemAttachments ». Vous pouvez observer à droite, dans l’onglet ‘Parcourir & Rechercher’ que s’affiche une table dont la colonne ‘path’ accueille tous les chemins de localisation qu’il va nous falloir modifier. On pourrait les modifier ici manuellement, un par un.
  5. Affichez l’onglet ‘Executez le SQL’,  et entrez la commande suivante qui permettra de traiter en un seul lot les chemins toutes les documents attachés :

 UPDATE itemAttachments SET path=REPLACE(path, 'AncienneChaîneDeCaractères', 'NouvelleChaîneDeCatactères');

Note : évidemment vous adapterez les anciennes et nouvelles chaînes de caractères en fonction de votre situation. La commande remplacera au sein du chemin complet uniquement la chaîne que vous spécifierez, laissant le reste tel quel : en somme vous n’aurez modifié que le nécessaire pour retrouver un chemin valide. Ces chaînes peuvent être aussi bien un nom de répertoire qu’un chemin complet. On remarquera qu’on peut ainsi facilement ajouter un niveau d’arborescence au besoin.

Par exemple : les deux commandes suivantes permettent de résoudre respectivement un changement de nom du répertoire parent d’une part, et le déplacement dans un sous-niveau de l’arborescence :

  • UPDATE itemAttachments SET path=REPLACE(path, 'Doctorat', 'Bibliothèque');
  • UPDATE itemAttachments SET path=REPLACE(path, '/home/jonathan/Doctorat/, '/home/jonathan/Bibliothèque/Articles/');

Enfin, vous pourrez vérifier que l’opération s’est correctement effectuée en affichant à nouveau l’onglet ‘Parcourir & Rechercher’, colonne ‘path’.

Astuces en bonus

  • Plutôt que de travailler sur le fichier original de la base de données, il peut paraître judicieux de s’entraîner au préalable sur une copie que l’on pourra supprimer sans risque.
  • La commande suivante effectue la même opération en mode simulation, très utile aussi pour tester une syntaxe :
    SELECT path AS oldPath, REPLACE(path, 'C:\Path\To\Old\Dir', 'C:\Path\To\New\Dir') AS newPath FROM itemAttachments;
  • Au besoin, on trouvera ici de la documentation sur la syntaxe à utiliser sous SQLite.

1 réponse

  1. 9 février 2012

    […] background-position: 50% 0px; background-color:#222222; background-repeat : no-repeat; } laspic.hypotheses.org – Today, 2:52 […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *