Cette page décrit Calíope 1.5, la version que je construis en ce moment. La 1.4 est sur l'App Store pour Mac, iPad, iPhone, Apple Watch, Apple TV et Apple Vision Pro. Le changelog indique dans quelle version chaque fonction est arrivée.

Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.

Éditeur SQLite

Éditeur SQLite

Ouvrez et modifiez des fichiers SQLite locaux sans serveur.

Où le trouver : Espace de travail › Outils › Éditeur SQLite

L'Éditeur SQLite est un outil autonome pour les fichiers locaux .sqlite/.db, à la manière de DB Browser for SQLite. Il comporte quatre sections : Structure, Données, Exécuter du SQL et Pragmas, et fonctionne même sans connexion à un serveur.

Calíope ouvre des bases SQLite non chiffrées (SQLCipher n'est pas pris en charge).

Mots-clés : sqlite, db, local, base de données, fichier

Ouvrir ou créer une base

Ouvrez un fichier SQLite existant ou créez-en un nouveau.

Où le trouver : Espace de travail › Outils › Éditeur SQLite

Utilisez Ouvrir… pour choisir un fichier .sqlite/.db existant, ou Nouvelle base… pour en créer un vide. Les fichiers récents apparaissent sur l'écran d'accueil. Un badge Lecture seule s'affiche lorsqu'un fichier ne peut pas être modifié.

Mots-clés : ouvrir, créer, nouveau, récents, fichier

Explorer et concevoir la structure

Parcourez tables, vues, index et déclencheurs, et créez-les.

La section Structure affiche l'arbre du schéma avec les colonnes et le DDL de chaque objet. Utilisez Nouveau pour créer des tables, index ou vues, Ajouter une colonne ou Renommer la table sur la table sélectionnée, et Supprimer pour supprimer un objet.

Mots-clés : structure, table, index, vue, déclencheur, créer, ddl, schéma

Parcourir et modifier les données

Affichez, filtrez, triez et modifiez les lignes.

La section Données affiche les lignes d'une table page par page, avec le compteur et les flèches à droite de la barre. Le nombre de lignes par page, c'est vous qui le choisissez dans Préférences › Éditeur de texte › Résultats › Lignes par page —Réglages, sur iPad— : c'est la même préférence qu'utilisent la grille d'Exécuter du SQL et celle de l'Éditeur SQL. Triez en appuyant sur l'en-tête d'une colonne —appuyez à nouveau pour inverser l'ordre—, restreignez colonne par colonne avec Filtres, ou saisissez du texte dans le champ de recherche pour chercher dans toutes à la fois ; dans les deux cas le filtre s'applique en appuyant sur Entrée. Le sélecteur Table liste les tables du fichier, et elles ne sont pas toutes modifiables : sur une table WITHOUT ROWID, ou sur n'importe laquelle si le fichier a été ouvert en lecture seule, la barre indique que l'objet ne peut pas être modifié au lieu de proposer les boutons.

Modifier une cellule

macOS : double-clic dessus. iPad : un simple toucher.

La valeur se saisit dans la grille elle-même. Entrée valide, et quitter la cellule —en toucher une autre, ou perdre le focus— valide également ; Échap annule et laisse la valeur précédente (sur iPad, avec un clavier connecté).

L'éditeur avancé

Ce qui ne tient pas sur une ligne se saisit dans une feuille à part. Elle s'ouvre avec le bouton ⋯ de la cellule —macOS : au survol du pointeur ; iPad : sur les cellules de la ligne sélectionnée, que l'on marque en touchant son numéro— ou avec Éditeur avancé… dans le menu contextuel (clic droit sur macOS, appui prolongé sur iPad). Là, la même valeur s'écrit en texte, en JSON —avec un bouton qui le met en forme, et sans laisser appliquer un JSON invalide—, en hexadécimal, ou s'affiche comme image quand les octets en sont une —et cette image se zoome, de 100 % à 800 %, au pincement, à la molette ou avec les boutons du bas— ; et ces octets s'importent depuis un fichier et s'exportent vers un autre. Une cellule qui contient déjà des données binaires ouvre directement cette feuille, sans passer par le champ de la grille.

Laisser une cellule à NULL

Dans le menu contextuel de la cellule, Définir à NULL, sans rien ouvrir d'autre ; dans l'éditeur avancé, c'est aussi un interrupteur. Une cellule sans valeur s'affiche NULL en italique. Attention : effacer le contenu dans la grille et valider écrit la chaîne vide, qui n'est pas la même chose que NULL.

Ajouter et supprimer des lignes

Ajouter une ligne ouvre un formulaire avec une ligne par colonne, son type et si elle est obligatoire. Les colonnes que la table sait remplir seule —celles qui déclarent une valeur par défaut, et la clé primaire INTEGER— sont cochées d'emblée pour que le moteur les écrive : décochez la case si vous préférez saisir la valeur vous-même. Un champ laissé vide est enregistré comme NULL, et Insérer reste désactivé tant qu'une colonne obligatoire n'a pas de valeur —l'avertissement à côté indique laquelle—. À la validation, une seule instruction INSERT est émise, ne nommant que les colonnes qui portent une valeur. Pour supprimer, sélectionnez la ligne par son numéro et utilisez Supprimer la ligne, ou le menu contextuel de n'importe laquelle de ses cellules.

Rien de tout cela ne touche le fichier tant que vous n'appuyez pas sur Enregistrer les modifications : ce que vous modifiez reste dans une transaction en attente qu'Annuler les modifications défait entièrement.

Mots-clés : données, lignes, modifier, filtrer, trier, rechercher, cellule, blob, null, insérer, nouvelle ligne, supprimer, json, hex, image

Écrire et exécuter du SQL

Coloration syntaxique, autocomplétion et une grille de résultats avec plafond de lignes.

La section Exécuter du SQL utilise le même champ de texte et la même grille de résultats que l'Éditeur SQL de serveur, mais sur le fichier ouvert et sans aucune connexion.

Écrire et exécuter

Le texte est coloré : mots-clés, chaînes, nombres et commentaires, chacun avec sa couleur. Appuyez sur Exécuter, ou sur ⌘↩ depuis l'intérieur du texte, et tout le script s'exécute. Ce qui s'affiche en dessous est le résultat de la dernière instruction qui a renvoyé des lignes ; si aucune n'en a renvoyé, le nombre de lignes affectées est indiqué. Une erreur arrête le script à cette instruction et le message du moteur est affiché tel quel.

Ce qui écrit dans le fichier —un INSERT, un UPDATE, un CREATE TABLE— reste en attente, comme une modification faite dans Données : le fichier n'est pas touché avant Enregistrer les modifications, et Annuler les modifications défait le tout.

Autocomplétion

Le panneau de suggestions apporte les mots-clés SQL et les tables du fichier ouvert avec leurs colonnes —toutes, pas seulement celles de la table sélectionnée dans Structure—, et il se met à jour après chaque changement de schéma.

Il s'ouvre à la main, et n'apparaît jamais tout seul pendant que vous tapez. Sur macOS, avec ⌥Esc et au moins le début du mot saisi : la liste vient de ce préfixe, les mots-clés d'abord et les noms du fichier ensuite, et le nom est inséré tel quel. Sur iPad, avec le bouton Autocomplétion de l'en-tête de la section, qui ouvre le panneau à tout moment et n'a pas besoin de clavier ; là, accepter une table ou une colonne l'écrit entre accents graves —`ma_table`—, que SQLite accepte comme les guillemets droits.

Les mots-clés et l'aide des fonctions sont ceux du SQL général de Calíope, pas ceux de SQLite : les fonctions propres à SQLite comme julianday() ou printf() s'exécutent sans problème, mais ne sont pas suggérées.

La grille de résultats

Les lignes vont par pages, et le nombre de lignes par page, c'est vous qui le choisissez dans Préférences › Éditeur de texte › Résultats › Lignes par page —Réglages, sur iPad— : la même préférence qu'utilisent la section Données et l'Éditeur SQL.

Sur macOS, vous pouvez trier en appuyant sur l'en-tête d'une colonne —le tri est celui du client et porte sur toutes les lignes récupérées, pas seulement sur la page affichée—, changer la largeur d'une colonne en tirant son bord, masquer ou réordonner les colonnes depuis l'en-tête, choisir plusieurs lignes avec ⇧ ou ⌘ et les copier avec ⌘C, ce qui les laisse en TSV avec les noms des colonnes devant. Sur iPad, on change de page avec les boutons du bas et les colonnes se mesurent toutes seules.

Dans les deux cas, faire glisser une ligne hors de l'app l'emmène dans une autre sous forme de tableau, et le menu contextuel d'une cellule —clic droit sur macOS, appui long sur iPad— copie sa valeur, l'affiche en entier et exporte la ligne en CSV.

Ce qui est affiché ici ne se modifie pas : pour changer une donnée, il y a la section Données.

Le plafond de lignes

Un SELECT volumineux n'est pas récupéré en entier : il est coupé au Préférences › Éditeur de texte › Résultats › Plafond de lignes, le même plafond qu'utilise l'Éditeur SQL. Quand il coupe, la grille le dit sous les lignes et propose Tout récupérer, qui réexécute la requête sans plafond. Avec le plafond à zéro, rien n'est jamais coupé.

Fiches de fonctions

En survolant une fonction avec le pointeur sur macOS, ou en y plaçant le curseur de texte sur iPad, sa fiche apparaît, celle de SQLite : syntaxe, retour, paramètres et un exemple. Le sujet Aide contextuelle pour les fonctions SQL l'explique.

Mots-clés : exécuter, sql, coloration, syntaxe, autocomplétion, suggestions, grille, résultats, trier, copier, glisser, plafond, lignes, page

Enregistrer et annuler les modifications

Les modifications restent en attente jusqu'à leur enregistrement.

Les modifications sont regroupées dans une transaction en attente. Un point ambre indique des modifications non enregistrées. Utilisez Enregistrer les modifications pour valider ou Annuler les modifications pour les abandonner. La fermeture avec des modifications en attente demande confirmation.

Mots-clés : enregistrer, annuler, valider, transaction, modifications

Importer et exporter

Importez du CSV et exportez en CSV, JSON ou SQL.

Depuis Importer / Exporter, vous pouvez importer un fichier CSV —il devient une table au nom du fichier, avec des colonnes de texte, ou ses lignes s'ajoutent si cette table existe déjà—, exporter la table ouverte dans Données en CSV ou JSON, ou exporter toute la base en un vidage SQL (schéma et données). Une importation reste en attente, comme toute modification, jusqu'à Enregistrer les modifications.

Mots-clés : importer, exporter, csv, json, sql, vidage, sauvegarde

Pragmas et maintenance

Modifiez les pragmas du fichier, vérifiez-le et compactez-le.

La section Pragmas affiche les réglages du fichier. Ceux de Modifiables —Clés étrangères, Auto-vacuum et les autres— changent sur-le-champ, et les numériques avec Appliquer. Ils agissent aussitôt, hors de la transaction en attente, et restent donc désactivés tant qu'il y a des modifications non enregistrées : enregistrez ou annulez d'abord. Certains, comme l'auto-vacuum, ne prennent effet qu'après un VACUUM.

Maintenance vérifie le fichier —Vérifier l'intégrité, Vérifier les clés étrangères— ou le range —VACUUM, ANALYZE, REINDEX—, et la réponse du moteur s'affiche sous les boutons. Les autres pragmas sont listés sous Lecture seule avec leur valeur actuelle.

Mots-clés : pragma, pragmas, maintenance, intégrité, vacuum, analyze, reindex, clés étrangères