OctoSQL – Pour interroger vos JSON, CSV…etc en SQL | Outils de développement
Real DB Admin crée une véritable base de données. Baby DB Admin fait du CSV. Et c’est vraiment chiant de manipuler des fichiers CSV, voire JSON, TSV, Parquet ou même texte ligne par ligne.
Heureusement, grâce à Lolilol, j’ai découvert un petit outil très sympathique qui va permettre de manipuler des fichiers de données avec SQL, comme si vous étiez sur une vraie base de données. Cet outil est OctoSQL et au-delà du classique SELECT* FROM, vous pourrez même faire des jointures entre vos fichiers, même s’ils sont de types différents.
Pour l’installer, rendez-vous sur Github ou directement avec Brew :
brew install cube2222/octosql/octosql
Sinon, c’est Go, donc ça peut être compilé comme ceci :
git clone https://github.com/cube2222/octosql
cd octosql
go install
Et c’est tout, puis il y a plus. Pour mes tests, j’ai généré de faux CSV à partir de ce site, puis j’ai pu les interroger en SQL.
Le SELECT* classique :
octosql "SELECT * FROM data.csv"
Ensuite quelques choses un peu plus compliquées :
octosql "SELECT * FROM data.csv WHERE email LIKE '%gov%'"
Et comme je vous l’ai dit, on peut même faire des jointures comme ceci :
octosql "SELECT * FROM ID.csv LEFT JOIN data.csv ON ID.id = data.id WHERE email LIKE '%.fr%'"
Il existe même un système de plugins pour étendre les fonctionnalités de l’outil. Par exemple, vous pouvez installer le plugin postgreSQL ou MySQL pour mélanger la base de données réelle avec des fichiers de données statiques. Tellement cool, non ?
Il existe même un plugin pour générer des données aléatoires :
octosql plugin install random_data
octosql "SELECT * FROM random_data.users" --describe
L’outil est également capable de gérer tous les flux de données. Cela signifie que vous pouvez lancer une requête sur des données qui arrivent dans un flux continu. Je vous laisse tester cette dernière partie, quant à moi, je n’ai pas réussi à la faire fonctionner.
A découvrir ici !