Accueil > calibre technique >

<< L'interface en ligne de commande  |

Amusez-vous avec Calibre en SQL !

Par Arioch91

Comme dans de nombreux domaines d'applications (smartphones Android, plug-ins Firefox, Chrome, etc), SQLite est le logiciel de gestion de base de données qui se dissimule sous Calibre et qui gère donc vos bibliothèques de livres. En gros, Calibre est l'outil graphique qui vous permet de modéliser votre bibliothèque de livres numériques et de la personnaliser selon vos gouts et vos envies, mais c'est SQLite qui prend le contrôle derrière de manière transparente pour qu'à chaque nouveau démarrage de Calibre, vous retrouviez tous vos petits bien en place et selon la configuration mitonnée aux petits oignons par vos soins.

Avec SQLite et des connaissances en langage SQL, vous allez pouvoir gratter un peu sous Calibre et vous faire vos propres listes personnelles pour savoir, par exemple : combien avez-vous de livres par auteur, par genre ? Combien avez-vous de livres lus ? Non lus ? A quelle date exactement avez-vous enregistré vos livres dans Calibre ?

Un peu d'infos sur le langage SQL si besoin...

Installer un logiciel pour utiliser SQLite

SQLite est donc un petit logiciel de gestion de bases de données comme Oracle, MySQL, PostGrepSQL mais en moins poussé sur certaines fonctionnalités. En effet, il n'est pas possible de donner des droits et privilèges sur une base de données SQLite et d'autres options ne sont pas disponibles. Par contre, SQLite est vraiment puissant pour créer une base de données accessibles sans effort sous Windows, Linux, MacOS, BSD, Unix et créer une table dans votre base sans se soucier de la nature de son contenu est un jeu d'enfant puisque SQLite devine de lui-même le type de données que vous lui demandez de rentrer dans ses tables (il est possible bien sûr de bidouiller soit-même ce genre de choses, comme de rajouter des clés primaires ou de s'assurer que telle colonne devra être obligatoirement remplie pour chaque nouvelle ligne, etc.).

Pour bosser en SQLite avec Calibre, plusieurs possibilités s'offrent à vous :

Vous avez fais votre choix, il faut désormais passer à la rubrique suivante...

Sauvegarder votre bibliothèque calibre au format SQLite

Calibre sauvegarde les metadonnées de chacun de vos livres dans un fichier .OPF dans chaque dossier contenant un livre. Mais ici, ce que l'on cherche, c'est de pouvoir accéder aux métadonnées de la base de données complète.

Dans calibre, passez par l'icône Bibliothèque , puis Maintenance de la bibliothèque et lancer la vérification de la bibliothèque. Le temps de vérification dépend du nombre de livres que comporte votre bibliothèque. Une fois la vérification terminée, allez faire un tour dans votre dossier Calibre sur votre disque dur : votre base de données s'y trouve désormais et il ne reste plus qu'à l'ouvrir avec l'une des solutions proposées plus haut.

La structure d'une base de données SQLite3 de Calibre

Une bonne manière de voir les différentes relations entre tables est de faire un diagramme.

Quelques éléments de nomenclature :

Pour chaque table, les colonnes sont listées avec quelques informations :

  1. Le code de la colonne
  2. Son type
  3. Les clés éventuellement associées (pk : primary key [clé primaire], ak : alternative key |clé alternative] ou fk : foreign key [clé étrangère])
  4. Information sur l'obligation ou non de renseigner la colonne (null : non obligatoire, not null : obligatoire, identity : obligatoire et auto-incrémentée)

On remarque que la table centrale est BOOKS - pas surprenant pour Calibre ;)

J'ai laissé la table CUSTOM_COLUMN_1 en orange et non en bleu. Il semble qu'une table CUSTOM_COLUMN_x soit créée pour chaque colonne personnalisée ajoutée dans Calibre.

base_calibre

Quelques requêtes SQL

Lancer le logiciel ou extension Firefox téléchargé(e), ouvrez la base de données de Calibre (ne lancez pas Calibre) et dans la zone de Commande SQL, faites un copié-collé des requêtes ci-dessous pour afficher le résultat.

Requête affichant par genre littéraire vos livres appartenant à une SAGA (ex. Game of Thrones)

select
tags.name as GENRE
, books.title as TITRE
, books.author_sort as AUTEUR
, series.name as SERIE
, substr(books.timestamp,1,10) as DATE_ENTREE
from books, tags, books_tags_link, series, books_series_link
where tags.id = books_tags_link.tag
and books.id = books_tags_link.book
and series.id = books_series_link.series
and books_series_link.book = books.id
order by GENRE, AUTEUR, TITRE

A noter que selon le logiciel utilisé, vous pourrez (c'est aussi le but recherché !) exporter vos résultats au format CSV (récupérable sous Excel par exemple), HTML, ...

Requête pour sélectionner TOUS vos livres, triés par genre, qu'ils appartiennent à une série ou non

select TAGS.NAME as GENRE
, BOOKS.TITLE as TITRE
, BOOKS.AUTHOR_SORT as AUTEUR
, SERIES.NAME as SERIE
, case when SERIES.NAME is not null
then BOOKS.SERIES_INDEX
end as NUM
, substr( BOOKS.TIMESTAMP, 1, 10 ) as DATE_ENTREE
from BOOKS
left join BOOKS_TAGS_LINK on BOOKS_TAGS_LINK.BOOK = BOOKS.ID
left join TAGS on TAGS.ID = BOOKS_TAGS_LINK.TAG
left join BOOKS_SERIES_LINK on BOOKS_SERIES_LINK.BOOK = BOOKS.ID
left join SERIES on SERIES.ID = BOOKS_SERIES_LINK.SERIES
order by GENRE, AUTEUR, TITRE

Requête pour compter le nombre de livres par auteur

SELECT a.sort auteur, count(*) nb_livres
FROM authors a, books_authors_link l
WHERE a.id=l.author
GROUP BY a.sort
ORDER BY nb_livres DESC

Contributeurs : Mingyar, Major Tom

Haut de page

Dernière modification de la page : 12/12/2013

La plupart des textes se trouvant ici ont été gracieusement mis à ma disposition par leur auteur ou traduits à partir de textes publiés en ligne par ceux qui en détiennent les droits. Vous pouvez les citer mais vous devez impérativement indiquer l'auteur d'origine et/ou, le cas échéant, reprendre le lien que j'ai mis vers le texte original.
Dans la mesure du possible, merci de mettre un lien vers l'article plutôt que le recopier intégralement. Conformément à la législation, vous avez le droit de résumer ou de citer brièvement tout texte qui vous intéresse.
Toute utilisation des textes se fera selon les termes de la Licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage à l'Identique 2.0 France.
Contrat Creative Commons

Accueil - Plan du site - Contact