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.
Chargez des données tabulaires depuis des fichiers CSV, JSON ou Excel directement dans une table.
Où le trouver : Arbre des schémas › clic droit › Importer des données…
Calíope inclut un assistant d'importation en trois étapes pour charger des données depuis des fichiers externes.
Comment y accéder :
Faites un clic droit (macOS) ou appuyez longuement (iPad) sur le nom d'une table dans l'arborescence du schéma et sélectionnez Importer des données…. L'assistant s'ouvre préconfiguré avec la base de données et la table sélectionnées.
Étape 1 — Fichier :
Cliquez sur Sélectionner un fichier… et choisissez le fichier à importer. L'assistant détecte automatiquement le format. Un fichier de plus de 64 Mo (CSV, JSON ou Excel) est refusé avant d'être lu : l'assistant le dit sur-le-champ, avec la taille du fichier et le maximum. Pour importer davantage, découpez le fichier en plusieurs.
Formats pris en charge :
- CSV — avec détection automatique du séparateur (,, ;, tabulation). Un champ entre guillemets peut s'étendre sur plusieurs lignes : les sauts de ligne entre les guillemets restent dans la valeur.
- JSON — tableau d'objets [{…}, {…}].
- Excel (.xlsx) — première feuille d'un classeur Microsoft Excel ou Numbers.
Étape 2 — Colonnes :
L'assistant affiche les colonnes du fichier et un sélecteur pour mapper chacune à la colonne correspondante de la table cible. Les colonnes non mappées sont étiquetées Ignorer et ne sont pas importées. Activez Première ligne est un en-tête si le fichier contient une ligne de titres.
Étape 3 — Importer :
Configurez les options d'importation :
- Mode d'insertion — n'apparaît que si le moteur en propose plus d'un :
- Insérer — insère les lignes telles quelles. Une ligne dont la clé primaire existe déjà échoue avec le message du serveur.
- Ignorer les doublons — insère les nouvelles lignes et laisse de côté celles dont la clé primaire existe déjà.
- Remplacer les doublons — si la clé primaire existe déjà, la ligne du fichier remplace celle de la table.
- Lignes par lot — nombre de lignes insérées dans chaque instruction INSERT. Options : 100, 500 ou 1000. Des lots plus grands sont plus rapides mais consomment plus de mémoire serveur.
MySQLMariaDBAurora
Avec MySQL et MariaDB, les trois modes sont proposés.
PostgreSQL
Avec PostgreSQL, seuls Insérer et Ignorer les doublons sont proposés : ce que Calíope peut écrire là face à un doublon saute la ligne, il ne la remplace pas, donc Remplacer les doublons promettrait quelque chose qui n'arrive pas.
SQL Server
Avec SQL Server, seul Insérer est possible, donc le sélecteur n'est pas affiché : un doublon échoue avec le message du serveur.
Le panneau de journal affiche la progression et le résultat ligne par ligne.
Exportez les bases de données et objets sélectionnés vers un fichier .sql ou .sql.gz sans bloquer l'interface.
Où le trouver : Espace de travail › Outils › Sauvegarde
Ouvrez Sauvegarde depuis la barre de navigation de l'espace de travail. Dans l'onglet Sauvegarde, sélectionnez les bases de données et objets à inclure à l'aide de l'arborescence à gauche. Configurez les options et choisissez le fichier de destination. Cliquez sur Créer une sauvegarde.
Traitement en arrière-plan :
La sauvegarde s'exécute entièrement hors du thread principal. L'interface reste totalement réactive pendant que le moteur vide les données. Le panneau de journal affiche la progression objet par objet en temps réel.
Temps restant estimé (ETA) :
Une fois le premier objet traité, un compteur de temps restant estimé apparaît à côté de la barre de progression, calculé à partir de la vitesse de vidage actuelle.
Annuler une sauvegarde :
Cliquez sur Annuler à tout moment. Le moteur s'arrête après la fin de l'opération en cours et supprime le fichier partiel du disque.
macOS :Enregistrer sous… choisit le fichier dans le panneau d'enregistrement ; à la fin, Afficher dans le Finder vous y mène. iPad : à la fin, le bouton Partager le fichier apparaît pour exporter le fichier vers le stockage de l'appareil ou iCloud Drive.
Notification à la fin :
Si vous minimisez l'application ou passez à une autre app pendant une longue sauvegarde, Calíope envoie une notification locale à la fin ou en cas d'erreur. Requiert l'autorisation de notifications (macOS : Centre de notifications ; iPad : Réglages › Notifications). Activez ou désactivez dans Préférences › Notifications › Sauvegarde manuelle en arrière-plan.
Choisissez les tables, vues, routines et utilisateurs à inclure.
Où le trouver : Sauvegarde › Arbre de sélection
L'arborescence à gauche affiche chaque base de données avec ses types d'objets : Tables, Vues, Routines et Triggers, et Événements là où le serveur en a. À l'ouverture de l'outil, tout est coché. Tout sélectionner et Tout désélectionner cochent ou vident tout, et les raccourcis Tout, Tables uniquement et Structure seule sélectionnent en bloc (Structure seule désactive aussi Inclure les données) ; ou cochez et décochez un par un. La section Utilisateurs du serveur permet d'inclure les comptes du serveur et leurs privilèges dans la sauvegarde.
L’arbre dispose en outre d’un filtre par nom dans son en-tête et affiche la taille estimée à côté de chaque table. La case de chaque base coche ou décoche tout son contenu, et à sa droite vous voyez combien d’objets sont sélectionnés sur le total. La section Utilisateurs du serveur se trouve sous l’arbre, et non dedans : les utilisateurs appartiennent au serveur et ne dépendent d’aucune base. Une base créée après l’ouverture de l’outil apparaît avec Actualiser la liste des bases de données dans le menu contextuel de l’arbre.
SQL Server
Chaque entrée de l'arborescence est une base de données avec l'un de ses schémas (demo.dbo, demo.rrhh) : la sauvegarde écrit la base, le schéma et ses objets.
PostgreSQL
Chaque entrée de l'arborescence est un schéma de la base de données à laquelle vous êtes connecté : la sauvegarde écrit le schéma, les extensions qu'il utilise et ses objets. Les objets qu'apporte une extension — les fonctions de PostGIS, par exemple — ne sont pas listés : à la restauration, le fichier recrée l'extension.
Exécutez un fichier .sql ou .sql.gz sur le serveur pour restaurer des données.
Où le trouver : Sauvegarde › Onglet Restaurer
Dans l'onglet Restaurer, choisissez le fichier avec Choisir un fichier…. Les fichiers .sql et .sql.gz (compressés avec gzip) sont acceptés ; Calíope détecte le format via le nombre magique du fichier, pas via l'extension, donc renommer le fichier ne change pas le résultat.
Aperçu : appuyez sur Aperçu pour inspecter les premières ~200 lignes avant d'exécuter. Utile pour vérifier quelles bases de données et instructions contient un dump avant de l'appliquer.
Confirmation préalable : en appuyant sur Restaurer, un résumé apparaît avec le nombre d'instructions détectées et les bases de données affectées (lues dans les instructions qui les sélectionnent, les créent ou les suppriment). Si le script contient des DROP, le résumé avertit que des objets existants seront supprimés.
SQL Server
Le fichier est découpé en lots séparés par des lignes GO, et la restauration ne coupe qu'à ces lignes : le corps d'une procédure contenant des ; arrive entier.
PostgreSQL
Le fichier est restauré dans la base de données à laquelle vous êtes connecté : ses schémas y sont créés.
MySQLMariaDBAurora
Un dump de mysqldump ou mariadb-dump est restauré comme le ferait le client en ligne de commande : ses commentaires exécutables (/*!40101 … */) parviennent au serveur, et les colonnes binaires exportées brutes, sans --hex-blob, arrivent octet pour octet.
Annulation : pendant la restauration, vous pouvez appuyer sur Annuler pour arrêter après l'instruction en cours.
Erreurs : la restauration s'exécute dans une seule session et s'arrête à la première erreur. Le journal nomme l'instruction en échec (l'objet et sa base) avec le message du serveur, et indique à quelle instruction elle s'est arrêtée.
macOS : le sélecteur ouvre la boîte de dialogue standard du Finder. iPad : le sélecteur utilise le navigateur de documents du système, avec accès à iCloud Drive et aux applications compatibles. Un bookmark security-scoped est généré pour pouvoir relire le fichier après fermeture du sélecteur.
Nécessite une connexion active : le bouton est désactivé si aucun serveur n'est connecté. Un avertissement orange le signale.
Configurez le contenu, le format et la compression du fichier de sauvegarde généré.
Où le trouver : Sauvegarde › Section d'options
Dans l'onglet Sauvegarde, la section des options vous permet d'ajuster ce que le fichier généré contient :
- DROP avant CREATE — ajoute DROP TABLE IF EXISTS (ou DROP VIEW, DROP PROCEDURE, etc.) avant chaque instruction CREATE. Recommandé pour les restaurations propres qui écrasent les objets existants.
- Inclure les données — ajoute des instructions INSERT avec les données de chaque table sélectionnée. Désactivez cette option pour générer uniquement le schéma (structure sans données).
- Inclure la date dans le nom — ajoute la date et l'heure au nom du fichier ; sur macOS, au nom que propose Enregistrer sous… (ex. backup_2026-06-05_14-30.sql).
- Inclure les utilisateurs du serveur — la case de la section Utilisateurs du serveur, sous l'arbre : exporte les comptes cochés et leurs privilèges avec les instructions qui les créent et leurs privilèges.
- Inclure les mots de passe des utilisateurs — apparaît quand les utilisateurs du serveur sont inclus. Option explicite désactivée par défaut. Lorsqu'elle est désactivée, le mot de passe — ou son hash — est écrit comme '***REDACTED***'. Activez-la uniquement si vous restaurez le fichier sur le même serveur et que le dossier de destination n'est pas synchronisé avec iCloud Drive, Dropbox ou tout autre service.
- Compresser la sortie (.sql.gz) — applique la compression gzip au fichier pendant sa génération, sans stocker le SQL complet en mémoire. Le fichier résultant est généralement 70 à 85 % plus petit que le .sql équivalent. La compression utilise le framework Compression d'Apple en temps réel.
MySQLMariaDBAurora
Les utilisateurs du serveur sont écrits comme CREATE USER et GRANT.
SQL Server
Les utilisateurs du serveur sont les connexions : chacune est écrite comme CREATE LOGIN … WITH PASSWORD = … HASHED, avec son utilisateur, ses rôles et ses permissions dans chaque base. DROP avant CREATE supprime aussi, d'abord, tous les objets de chaque schéma qu'apporte le fichier.
PostgreSQL
Les utilisateurs du serveur sont les rôles : chacun est écrit comme CREATE ROLE, et les rôles prédéfinis pg_ seulement avec leurs privilèges, car chaque serveur les a déjà. DROP avant CREATE supprime chaque schéma en entier (DROP SCHEMA … CASCADE) avant de le recréer.
macOS :Enregistrer sous… choisit le fichier dans le panneau d'enregistrement standard. iPad : à la fin, le bouton Partager le fichier permet d'exporter le .sql ou .sql.gz vers n'importe quelle destination compatible avec le sélecteur de fichiers système.
Mots-clés : options sauvegarde, DROP IF EXISTS, inclure données, inclure utilisateurs, schéma, structure, données, date fichier, drop before create, compresser, gzip, sql.gz, compression
Configurez des sauvegardes récurrentes (quotidiennes, hebdomadaires, jours ouvrés, mensuelles ou toutes les N heures) avec notification à la fin.
Où le trouver : Espace de travail › Outils › Sauvegarde
Calíope peut exécuter des sauvegardes automatiquement sans intervention manuelle. Pour les configurer, ouvrez le panneau Sauvegarde depuis la barre latérale de l'Espace de travail.
Comment configurer une sauvegarde planifiée :
1. Dans l'onglet Planifiés du panneau Sauvegarde, cliquez sur Nouveau.
2. Donnez-lui un nom et choisissez le profil de connexion (ou toute connexion active), la fréquence (quotidienne, hebdomadaire, du lundi au vendredi, mensuelle, toutes les N heures ou à la demande), l'heure, le dossier de destination et le nombre de copies à conserver.
3. L'interrupteur de sa ligne l'active et la désactive.
Une sauvegarde planifiée copie toutes les bases de sa connexion, avec DROP avant CREATE et les données, sans compression. Pour ne sauvegarder que certaines bases, enregistrez un préréglage depuis l'onglet Sauvegarde et donnez-lui une fréquence avec son bouton crayon.
Comportement :
- Lorsque l'application est ouverte à l'heure configurée, la sauvegarde s'exécute en arrière-plan sans bloquer l'interface.
- À la fin, vous recevrez une notification système avec le nom du fichier et sa taille.
- Si l'application n'était pas ouverte à l'heure planifiée, la sauvegarde est marquée en attente : un bandeau indique combien ont été manquées, et Exécuter maintenant sur sa ligne la lance.
- Les sauvegardes plus anciennes sont automatiquement supprimées lorsque le nombre maximum de copies configuré est dépassé.
Sélection du dossier de destination :
Calíope s'exécute dans un sandbox strict (exigence de l'App Store). Lorsque vous choisissez le dossier avec Choisir un dossier…, une autorisation persistante est créée pour ce chemin spécifique. Si vous déplacez ou renommez le dossier par la suite, l'application vous avertira qu'elle a besoin que vous le sélectionniez à nouveau. Modifier le chemin à la main dans la fiche ne suffit pas — utilisez toujours Choisir un dossier….
Performances :
Les sauvegardes planifiées utilisent le même moteur de streaming que les sauvegardes manuelles : les données sont écrites directement sur disque objet par objet, sans bufferiser le SQL complet en mémoire. Cela permet de sauvegarder des bases de données de toute taille sans risque d'épuisement de la RAM ou de blocage de l'application.
Disponible sur macOS, iPad et iPhone. Nécessite l'autorisation de notifications système.
Réutilisez les paramètres d'une sauvegarde sans la planifier. Elles s'exécutent à la demande d'un clic.
Où le trouver : Sauvegarde › Onglet Planifiées
En plus des sauvegardes automatiques (quotidiennes, hebdomadaires, jours ouvrés, mensuelles ou toutes les N heures), l'onglet Planifiés peut accueillir des modèles manuels : configurations enregistrées avec un nom qui ne s'exécutent que lorsque vous appuyez sur le bouton Exécuter de leur ligne.
Comment créer un modèle manuel :
1. Dans l'onglet Sauvegarde, cochez ce qu'il faut sauvegarder et appuyez sur Enregistrer comme préréglage…, à côté de Créer une sauvegarde. Le préréglage garde la connexion et les bases qui contiennent les objets cochés (bases entières), et il est enregistré dans l'onglet Planifiés avec la fréquence « Manuel — à la demande ». Le dossier n'est pas repris, car le fichier choisi avec Enregistrer sous… ne donne pas le droit d'écrire à nouveau dans son dossier : choisissez-le avec le bouton crayon (Choisir un dossier…) avant la première exécution. Les options sont celles de toute sauvegarde planifiée : DROP avant CREATE et les données, sans compression.
2. Alternativement, dans Planifiés › Nouveau, choisissez l'option Aucune planification (exécuter à la demande) dans le sélecteur de fréquence.
Différences visuelles d'un préréglage manuel :
- Icône bolt.circle.fill indigo (vs. calendar.badge.checkmark vert pour les planifiées actives).
- Bouton principal Exécuter toujours visible sur la ligne.
- Pas d'interrupteur actif/inactif ni de « prochaine exécution » (non applicable).
- Pas d'accumulation de missedRuns (n'entrent pas dans le cycle automatique).
Fréquences disponibles pour les sauvegardes automatiques :
- Quotidienne à une heure fixe.
- Hebdomadaire un jour précis de la semaine.
- L-V (jours ouvrés) du lundi au vendredi.
- Mensuelle un jour précis (1–28) du mois.
- Toutes les N heures comptées depuis la dernière exécution.
- Manuel (à la demande) — sans planification automatique.
Historique d'exécution : le bouton clock.arrow.circlepath de chaque ligne (Voir l'historique) ouvre les exécutions de cette sauvegarde : succès, échecs, annulées et sautées. Sans exécution encore, il le dit.
Mots-clés : préréglage, modèle, manuel, à la demande, planifiée, fréquence, mensuel, jours ouvrés, toutes les N heures, historique, run history