Sur mes PC sous Windows, j’utilise Notepad++ depuis des années comme éditeur de texte pour écrire du html, css, php, batch… (et le fait que Windows ne propose pas d’autre outil de base que le bloc-notes, franchement, c’est assez incompréhensible ! N’importe quelle distribution GNU/Linux offre au moins un éditeur graphique et un éditeur console)

J’aime Notepad++ pour sa licence GPL, sa personnalisation, sa coloration syntaxique, son rechercher/remplacer avancé (par expressions régulières), sa gestion des différents encodages, son gestionnaire de plugins intégré, son édition en mode colonne, ses macros…

Je l’utilise comme logiciel par défaut pour ouvrir les csv que je génère par mes innombrables requêtes SQL — je ne les ouvre dans un tableur (LibreOffice Calc, pour ne pas le nommer) que quand j’ai besoin de trier, filtrer… les données.

Dernièrement, j’ai commencé à aller fouiner un peu dans les différents plugins de Notepad++ (je n’utilisais jusque là que TextFX, qui est génial et permet notamment de supprimer facilement les lignes vides, trier les lignes, échapper les quotes, changer la casse, et plein d’autres choses), et j’ai découvert CsvQuery.

Ce plugin très intéressant permet quand vous ouvrez un csv dans Notepad++ d’avoir un affichage en tableau en plus de l’affichage normal, sur lequel on peut faire des tris — rien que ça c’est déjà super ! — mais en plus de faire des requêtes SQL pour filtrer et trier les données.

Pour cela, le plugin utilise une base de données SQLite dans laquelle il crée une table pour chaque csv ouvert.

Dans l’exemple ci-dessus, j’ai ainsi filtré pour ne garder que les lignes avec une catégorie commençant par « v » et j’ai trié sur le champ titre :

SELECT * FROM THIS where category like 'V%' order by br0245

 

Mon seul regret, c’est que pour modifier les données (via un UPDATE), c’est un peu compliqué :

  • il ne faut pas se référer à la table THIS (qui n’est pas une table mais une vue) mais à T1, T2… (si vous traitez plusieurs csv en même temps, il faut aller dans compléments > CsvQuery > List parsed files ou saisir la commande SELECT * FROM sqlite_master pour savoir quelle table a quel nom)
  • les données modifiées ne sont pas visibles immédiatement (la requête est exécutée mais on ne voit pas le résultat, a priori il n’y a pas de RETURNING en SQLite, et cliquer sur « Read File » recharge les données du csv originel) ; la seule façon que j’aie trouvé pour l’instant consiste à faire un SELECT * FROM T1 après l’UPDATE
  • on peut recréer un nouveau csv à partir de la table modifiée (Clic droit  > Create new csv)

Bon, cette partie là pourrait être améliorée, mais franchement, en l’état ce plugin est déjà GÉNIAL je trouve ! Je voulais donc vous faire partager ma découverte.

Publicités