Comment interroger un fichier CSV en SQL sur Mac
Le SQL répond à des questions qu’un tableur ne peut pas poser : des totaux par groupe, une croissance mois après mois, le top 3 de chaque catégorie, en une seule requête. Tabulay fait tourner un moteur SQL analytique complet directement sur le fichier, sans import, sans base de données à monter.
Pourquoi le SQL sur un CSV demande d’habitude une base de données
Interroger un CSV en SQL demande normalement de le charger ailleurs d’abord : une base de données locale, un notebook, ou un outil en ligne de commande qui relit le fichier en mémoire à chaque fois. Chacun impose une étape de préparation, un schéma, une connexion, un import, avant la première réponse, et le fichier qui répond n’est plus celui qui est à l’écran.
Interroger le fichier directement
- Ouvrez le fichier et passez à l’éditeur SQL : View ▸ SQL Editor, ou ⌘2.
- Le fichier est déjà une table, nommée d’après lui-même (
shop_orders), ou simplementthis. Les colonnes gardent leur vrai type, montants à virgule décimale compris, doncamount < -1000compare des nombres, pas du texte. - Exécuter la requête, c’est ⌘↩ (Tabulay Pro, inclus dans l’essai de 14 jours). Une requête qui renvoie les lignes du fichier laisse la grille modifiable ; un agrégat s’affiche en résultat, lecture seule.
Trois requêtes, sur les fichiers d’exemple de Tabulay
Elles viennent des fichiers d’exemple fournis avec Tabulay, testées sur eux, chacune sur les vraies colonnes de son fichier.
Quelles lignes de stock sont sous leur seuil de réapprovisionnement ? Renvoie les lignes du fichier lui-même, depuis warehouse_inventory.csv : corrigez un comptage dans la grille, puis ⌘S.
SELECT *
FROM this
WHERE qty_on_hand < reorder_point
ORDER BY reorder_point - qty_on_hand DESC
Que vaut le stock par entrepôt, et sa part du total ? Une fonction de fenêtre, OVER (), calcule la part à côté du groupe.
SELECT warehouse,
sum(qty_on_hand) AS units,
round(sum(qty_on_hand * unit_cost), 2) AS stock_value,
round(100 * stock_value / sum(stock_value) OVER (), 1) AS pct_of_total
FROM this
GROUP BY warehouse
ORDER BY stock_value DESC
Quelles catégories de produits sont le plus retournées ? Depuis shop_orders.csv ; FILTER compte un sous-ensemble dans le même agrégat, sans sous-requête.
SELECT category,
count(*) AS lines,
round(100 * count(*) FILTER (WHERE status = 'returned') / count(*), 1) AS return_pct
FROM this
GROUP BY category
ORDER BY return_pct DESC
Vérifier le plan, exporter le résultat
Explain (⌥⌘E) montre le vrai plan d’exécution que le moteur va suivre, avec les temps sur demande, pour qu’une requête lente ne soit plus une supposition (Tabulay Pro, inclus dans l’essai de 14 jours). Export View as CSV (⇧⌘E) écrit les lignes affichées, quelle qu’en soit l’origine : le résultat d’une requête, ou une vue filtrée.
Gratuit ou Pro, dit clairement
Les puces de filtre répondent à la version courante de ces questions en quelques clics, gratuites pour tous, et se traduisent dans le même SQL en coulisses : passez à l’éditeur à tout moment et reprenez exactement là où les puces s’étaient arrêtées. Le menu Examples écrit des requêtes toutes faites à partir des colonnes de votre fichier, gratuitement ; écrire son propre SQL, exécuter une requête, et Explain sont Tabulay Pro. Une fois le fichier chargé, le moteur ne peut plus lire ni écrire aucun autre fichier, charger d’extension, ni changer ses propres réglages, et chaque requête s’exécute en une seule instruction.
Autres façons d’interroger un CSV
La ligne de commande a ses propres outils SQL sur CSV : rapides, scriptables, rentables pour une requête qu’on rejoue à l’identique chaque jour. Il n’y a pas de grille pour vérifier un résultat, et une faute dans un nom de colonne donne une trace d’erreur, pas une suggestion.
Une base de données apporte des index, des jointures entre plusieurs tables, et plusieurs personnes qui interrogent en même temps. Faire entrer un seul CSV dedans demande un serveur ou un moteur embarqué à installer, un schéma à définir, et un réimport à chaque changement du fichier source.
À essayer
Ouvrez un fichier, appuyez sur ⌘2, et essayez l’une des trois requêtes ci-dessus sur vos propres colonnes. La liste complète des fonctions SQL est sur la page fiche technique (en anglais), et totaliser un relevé bancaire à virgule décimale détaille le cas finance.