OctoSQL - Pour interroger en SQL vos JSON, CSV...etc

Image illustrant l'article : OctoSQL - Pour interroger en SQL vos JSON, CSV...etc

OctoSQL - Pour interroger en SQL vos JSON, CSV...etc

par Korben -

Vrai DB Admin fait de la vraie base de données. Bébé DB Admin fait du CSV. Et ça c’est bien relou de manipuler du CSV, ou même du JSON, du TSV, du Parquet ou même du fichier texte ligne par ligne.

Heureusement, grâce à Lolilol, j’ai découvert un petit outil bien sympathique qui va vous permettre de manipuler avec du SQL, des fichiers de données, comme si vous étiez sur une vraie base. Cet outil c’est OctoSQL et au delà des classiques SELECT * FROM, vous allez même pouvoir faire des jointures entre vos fichiers, même s’ils sont de différents types.

Pour l’installer, direction le Github ou directement avec brew :

brew install cube2222/octosql/octosql

Sinon, c’est du Go, alors ça peut se compiler comme ceci :

git clone https://github.com/cube2222/octosql
cd octosql
go install

Et voilà, ensuite, y’a plus qu’à. Pour mes tests, j’ai généré quelques CSV bidon à partir de ce site et ensuite, j’ai pu les interroger en SQL.

Le classique SELECT * :

octosql "SELECT * FROM data.csv"

Puis des choses un peu plus chiadées :

octosql "SELECT * FROM data.csv WHERE email LIKE '%gov%'"

Et comme je vous le disais, 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%'"

Y’a même un système de plugins pour étendre les fonctionnalités de l’outils. Vous pourrez par exemple installer le plugin postgreSQL ou MySQL pour mixer de la vraie base de données avec des fichiers data statiques. Trop cools non ?

Y’a même un plugin pour générer de la donnée random :

octosql plugin install random_data
octosql "SELECT * FROM random_data.users" --describe

L’outil est également capable de gérer tout ce qui est stream de données. Cela veut dire que vous pouvez lancer une requête sur de la donnée qui arrive en flux continu. Je vous laisserai tester cette dernière partie, me concernant, je n’ai pas réussi à la faire tourner.

À découvrir ici !