Chargez un fichier dans la table data, puis lancez SELECT ou WITH. L’aperçu affiché et exporté est limité à 200 lignes.
Le fichier chargé est exposé comme data. Pour garder l'espace de travail non destructif, cet outil accepte uniquement les requêtes SELECT et WITH et affiche au maximum 200 lignes.
Data Lab est utile pour une vérification rapide du schéma, une tranche SQL ciblée ou un aperçu Parquet local. Il ne remplace pas l'analyse de production à accès contrôlé, et il n'ouvre jamais une URL ni n'envoie le fichier sélectionné à un KivTools.
Chargez un fichier CSV, TSV, JSON, NDJSON ou Parquet, puis interrogez-le en SQL : la page confie le fichier à un moteur DuckDB qui s’exécute dans l’onglet, l’expose comme la table data et affiche le résultat de votre instruction SELECT ou WITH dans un tableau exportable. Le moteur est DuckDB-Wasm 1.32.0 dans un Web Worker — les octets du fichier vont à ce worker et nulle part ailleurs.
Le périmètre est volontairement étroit : un fichier à la fois, des instructions en lecture seule et un aperçu de 200 lignes au maximum. C’est ce qu’il faut pour les usages habituels d’une telle page — vérifier un schéma avant d’importer un dump, faire un GROUP BY sur un rapport exporté ou jeter un premier coup d’œil à un Parquet sans lecteur installé — sans monter une base de données.
CSV et TXT passent par le lecteur CSV, TSV par ce même lecteur avec une tabulation comme séparateur, JSON et NDJSON/JSONL par le lecteur JSON et Parquet par le lecteur Parquet : les types de colonnes sont donc déduits du fichier et non déclarés par vous. Tout arrive dans une vue nommée data, et charger un autre fichier la remplace — il n’y a pas de seconde table ni de jointure entre deux fichiers.
Seules les instructions commençant par SELECT ou WITH sont acceptées. DROP TABLE data et DELETE FROM data sont refusés avant même d’atteindre le moteur, avec le message «Par sécurité, Data Lab exécute uniquement des requêtes SELECT et WITH.» Un point-virgule final isolé ne gêne pas, mais un clic exécute une seule instruction : SELECT 1; SELECT 2 se termine par une Parser Error, et une extension non prise en charge comme .xlsx est refusée avec un message qui liste les formats acceptés.
Ce que vous saisissez est exécuté sous la forme SELECT * FROM (<votre requête>) AS kivtools_visible_result LIMIT 201, et la page dessine au plus 200 des lignes renvoyées. Demandez SELECT * FROM data sur un Parquet de 1 000 lignes : la ligne d’état affiche «200 lignes affichées (limité à 200)» et les compteurs indiquent 200+. Avec votre propre ORDER BY salary DESC LIMIT 5, vous obtenez exactement cinq lignes.
Exporter le CSV visible écrit ce que montre le tableau — une ligne d’en-tête et ces mêmes lignes, jusqu’à 200, avec des fins de ligne CRLF — et non le résultat complet : un résultat groupé de cinq lignes produit cinq lignes de données. Pour aller plus loin, agrégez ou découpez dans l’instruction : l’aperçu sert à lire, pas à extraire tout un fichier du navigateur.
Les messages d’erreur viennent du moteur lui-même et s’affichent tels quels. Une colonne mal orthographiée donne Binder Error: Referenced column “nope” not found in FROM clause! Candidate bindings: “name”, “monthly_events” ; une table absente donne Catalog Error: Table with name nowhere does not exist! ; une syntaxe cassée donne une Parser Error avec la position marquée ; un Parquet tronqué donne Invalid Input Error: No magic bytes found at end of file.
Une instruction en échec laisse à l’écran le résultat précédent et n’abîme pas la session : le clic suivant sur Exécuter une requête fonctionne normalement et le fichier reste chargé. Comme les échecs arrivent sous forme de texte et non de page cassée, vous pouvez corriger l’instruction dans la zone sans recharger la page ni rechoisir le fichier.
Dans Chrome, un CSV de 6 Mo contenant 200 000 lignes est devenu interrogeable en un quart de seconde environ, et un GROUP BY comme une fonction de fenêtrage sur ce fichier ont répondu dans le même ordre de grandeur ; un Parquet de 1 000 lignes et 13 colonnes a demandé quelques secondes lors de sa première lecture. La première visite télécharge le moteur — 34 Mo de WebAssembly plus les modules Apache Arrow — avant la première requête, et les visites suivantes le démarrent depuis le cache du navigateur en une seconde environ.
Les fichiers choisis sont lus dans l’onglet : les octets sont enregistrés auprès du Web Worker qui héberge le moteur, et ni le fichier, ni l’instruction saisie, ni les lignes du résultat ne partent vers KivTools. Panneau réseau ouvert, exécuter une requête sur un fichier chargé ne produit aucune requête réseau. La contrepartie : l’outil ne peut pas récupérer un fichier depuis une URL, et une question qui demande deux fichiers se traite en deux passes.