Partager un jeu de résultats avec un collègue, un product manager ou un client n'est jamais aussi trivial que ça devrait l'être. Le CSV se lit mal dans un tableur mal configuré, le JSON demande un outil, le PDF fige tout et interdit le tri. Envoyer une capture d'écran fait perdre les données brutes. C'est un cas d'usage récurrent dans un client de base de données, et il mérite un format qui n'ajoute pas un problème de plus.
QoreDB expose un format d'export HTML self-contained : un seul fichier .html, ouvrable directement dans un navigateur, contenant les données, la mise en forme, le tri, le filtrage et la pagination. Aucune ressource externe, aucun CDN, aucun outil à installer côté destinataire.
Un seul fichier, aucune dépendance
Le writer HTML (src-tauri/src/export/writers/html.rs) émet un document HTML5 complet avec sa feuille de style et son script embarqués directement dans les balises. Le CSS tient dans le head, le JavaScript dans un bloc script en fin de body, et les données sont sérialisées en tant que tableau JavaScript inline. Il n'y a ni fetch, ni import, ni référence à un fichier tiers.
Ce choix a une conséquence pratique : le fichier fonctionne sans réseau, sans permissions particulières, sur un poste verrouillé, dans une pièce jointe email, sur une clé USB. Le destinataire double-clique et l'ouvre. C'est le principal intérêt du format et la raison pour laquelle il existe à côté du CSV et du JSON.
Streaming pendant l'écriture, chargement complet à l'ouverture
Le writer implémente le trait ExportWriter partagé avec CSV, JSON et SQL. La méthode write_header émet le préambule HTML, les colonnes et leurs types sérialisés en JSON, puis ouvre le tableau DATA. Chaque write_row ajoute une ligne JSON sérialisée. La méthode finish ferme le tableau et émet le script d'affichage. Les I/O passent par un BufWriter tokio, ce qui rend l'export d'une grosse table possible sans matérialiser l'intégralité en mémoire côté Rust.
Le contrat côté navigateur est différent : à l'ouverture, tout le tableau DATA est parsé en une seule fois. Ce format est donc conçu pour des extractions de taille raisonnable, typiquement quelques milliers à quelques dizaines de milliers de lignes. Au-delà, Parquet ou CSV restent les bons choix. C'est un format de partage, pas un format d'archivage.
Ce que le fichier sait faire une fois ouvert
Le script embarqué offre trois interactions utiles : un champ de recherche qui filtre les lignes contenant la chaîne (insensible à la casse), un tri par colonne au clic sur l'en-tête, et une pagination configurable à 50, 100, 500 lignes ou tout afficher. Les compteurs total et filtré sont visibles en haut, et une barre de pagination reste sticky en bas.
Les valeurs sont typées visuellement : NULL apparaît en italique grisé, les nombres en vert, les booléens en jaune, les objets JSON sont stringifiés à l'affichage. Le type SQL de chaque colonne est indiqué à côté du nom. C'est le même vocabulaire visuel que le Data Grid, ce qui évite au destinataire de deviner la nature d'un champ.
Les valeurs sont échappées avant insertion dans le DOM. Une chaîne contenant du HTML n'exécute rien, elle s'affiche telle quelle. Le fichier est autonome, mais il reste défensif vis-à-vis de son propre contenu.
En pratique
Depuis la vue des résultats, l'utilisateur choisit Export, sélectionne HTML, et QoreDB écrit le fichier au chemin demandé. Le format est disponible pour toutes les sources : PostgreSQL, MySQL, SQLite, SQL Server, MongoDB, Redis, DuckDB. Le writer ne connaît que les colonnes et les valeurs remontées par le driver, ce qui garantit une cohérence de rendu quel que soit le moteur d'origine.
Le fichier généré fait typiquement quelques centaines de kilo-octets pour un millier de lignes, taille compatible avec la plupart des passerelles email. Il s'ouvre offline, s'archive dans un ticket, s'attache à un ADR ou à un compte-rendu de bug. Le destinataire n'a besoin de rien d'autre qu'un navigateur.
Un format assumé pour un usage précis
L'export HTML de QoreDB ne cherche pas à remplacer un dashboard ou un rapport BI. Il répond à une question simple : comment envoyer un extrait de table à quelqu'un qui n'a pas de client SQL, sans lui demander d'installer un outil ni de faire confiance à un lien externe. Un fichier, un double-clic, les données lisibles et manipulables. C'est le contrat minimum utile, et c'est ce que le format garantit.
Restez informé des nouveautés
Rejoignez notre newsletter pour recevoir les mises à jour majeures, les nouveaux drivers et nos coulisses techniques.

