Analyser efficacement un fichier CSV
Je travaille régulièrement sur des traitements de fichiers CSV. J'apprécie beaucoup ce format de fichier car il se génère et se lit facilement, qu'on soit informaticien ou non. J'ai d'ailleur écrit 2 librairies PHP pour lire, générer et valider des CSV : deblan/csv et deblan/csv-validator.
Lors des mes analyses, je me confronte parfois à des fichiers qui comportent beaucoup de colonnes et c'est un enfer d'utiliser un tableur pour visualiser et filtrer ces tableaux très larges.
Après quelques recherches, j'ai découvert deux projets qui se complètent à merveille ! Le premier est un outil qui transforme un fichier CSV en une base de données SQLite : csvs-to-sqlite. Le second génère une interface web (avec un serveur web intégré) pour faire des requêtes SQL sur une base de données SQLite : datasette.
Ce sont des outils écrits en Python qui s'installent et s'utilisent en une poignée de secondes.
$ sudo pip3 install csvs-to-sqlite datasette
Pour illustrer, je vais traiter le fichier CSV de la base officielle des codes postaux disponible sur data.gouv.fr.
$ wget -O codes_postaux.csv https://datanova.legroupe.laposte.fr/explore/dataset/laposte_hexasmal/download/\?format\=csv\&timezone\=Europe/Berlin\&use_labels_for_header\=true
$ csvs-to-sqlite -s ";" codes_postaux.csv codes_postaux.db
$ datasette serve codes_postaux.db
Serve! files=('codes_postaux.db',) (immutables=()) on port 8001
INFO: Started server process [8550]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)
On peut maintenant accéder à http://127.0.0.1:8001 depuis un navigateur et commencer à analyer et traiter les données :
Et le plus intéressant pour moi, c'est de pouvoir écrire des requêtes SQL affiner vraiment les données affichées :
Enfin, on peut générer un nouveau fichier CSV (ou JSON) avec les données filtrées.
Simple, rapide et efficace !

Validation de fichier CSV en PHP
Je publie aujourd'hui une première version fonctionnelle et presque totalement testée d'un v…

Capture, un reverse proxy pour analyser les requêtes de vos applications
Capture est un reverse proxy HTTP qui se place entre votre application cliente et une API. C…

Un modèle pour démarrer un script shell
J'ai régulièrement le besoin d'écrire des scripts shell un peu évolués. Il y a quelques mois…
Pour parcourir les fichiers CSV, DBeaver est pas mal y compris sur les gros fichiers. DBeaver étant très répandu, cela a l'avantage de ne pas avoir à installer un logiciel spécifique.
Il suffit de "brancher" DBeaver sur un répertoire contenant des CSV et hop on peut requêter dessus, à la SQL, comme si chaque CSV était une table. Pour faire des jointure il parait qu'avec un driver proprio on y arrive mais j'ai jamais essayé.
Merci pour cette astuce... Je vais m'en servir pour mes cours !
Bonjour, merci pour cette astuce. Il y a cependant une petite coquille :
wget -O code_postaux.csv (...) -> wget -O codes_postaux.csv (...)
Fixé ! Merci 😊