Mode d’emploi
- Collez une ou plusieurs instructions SQL, ou cliquez sur « Essayer un exemple ».
- Choisissez le dialecte de votre base de données afin que ses mots-clés, ses délimiteurs et ses opérateurs soient reconnus.
- Définissez la casse des mots-clés et l’indentation. La requête formatée s’affiche à droite à mesure que vous écrivez.
- Cliquez sur Minifier pour obtenir une version sur une seule ligne, puis copiez le résultat ou téléchargez-le au format .sql.
Fonctionnement
Le formatage repose sur la bibliothèque open source sql-formatter. Elle découpe la requête en jetons selon les règles du dialecte choisi, place chaque clause principale (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) sur sa propre ligne, indente les listes de colonnes et les conditions, puis applique la casse choisie aux mots-clés. Elle modifie les espaces et, si vous le demandez, la casse des lettres des mots-clés ; les identifiants, les chaînes littérales et les commentaires sont conservés. Il est important de choisir le bon dialecte : par exemple, MySQL utilise des accents graves pour délimiter les noms, SQL Server des crochets, et PostgreSQL utilise $$ pour commencer le corps d’une fonction.
Le formateur met en page le code, mais ne remplace pas une base de données. Il ne vérifie pas l’existence des tables ou des colonnes et ne valide pas l’ensemble de la grammaire : certaines requêtes SQL invalides sont donc formatées sans avertissement. S’il ne parvient pas à interpréter l’entrée, par exemple en cas de parenthèse non fermée, il indique la ligne et la colonne où il s’est arrêté.
La minification fonctionne différemment : elle conserve tous les jetons, réduit chaque suite d’espaces à une seule espace et supprime les commentaires (les indications d’optimisation telles que /*+ INDEX(t) */ et les commentaires MySQL /*! … */ sont conservés, car ils modifient le comportement). Les chaînes, les identifiants entre guillemets et les corps entre dollars sont copiés sans modification. Si un guillemet ou un commentaire n’est jamais fermé, la minification s’arrête avec une erreur plutôt que de faire une supposition.
Exemples
Lire une requête dans un journal
Un journal de requêtes lentes affiche une ligne de 400 caractères. Avec le dialecte MySQL et les mots-clés en majuscules, elle devient un bloc lisible où chaque condition JOIN et WHERE est sur sa propre ligne, ce qui permet de repérer facilement l’index manquant.
Un style cohérent pour la revue de code
Avant de valider leurs modifications, les membres d’une équipe formatent chaque migration avec le dialecte PostgreSQL, les mots-clés en minuscules et une indentation de 4 espaces. Les différences affichées ne révèlent ainsi que les vrais changements.
Intégrer du SQL dans du code
La minification transforme une requête de rapport commentée et répartie sur plusieurs lignes en une seule ligne, par exemple SELECT id, name FROM users WHERE active = 1 ORDER BY name, prête à être insérée dans une chaîne de caractères dans un script.
Foire aux questions
Quelles bases de données sont prises en charge ?
SQL standard, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark SQL, Hive, Trino/Presto, DuckDB, IBM Db2, SingleStoreDB, TiDB et Couchbase N1QL.
Le formatage peut-il modifier le comportement de ma requête ?
En principe, non : seuls les espaces et, si vous le choisissez, la casse des mots-clés sont modifiés. La casse des mots-clés n’a pas d’incidence en SQL. Pensez toutefois à vérifier le résultat avant de l’exécuter sur des données de production, surtout si vous utilisez des fonctionnalités inhabituelles de votre dialecte.
Pourquoi le message « impossible à formater » s’affiche-t-il ?
L’analyseur a rencontré un élément qu’il n’a pas pu interpréter, souvent un crochet ou un guillemet non fermé, ou une syntaxe appartenant à un autre dialecte. Vérifiez la ligne et la colonne indiquées dans le message et assurez-vous que le dialecte choisi correspond à votre base de données.
L’outil valide-t-il mon SQL ?
Non. L’outil n’est pas connecté à une base de données et ne connaît pas votre schéma. Une requête peut être formatée et néanmoins échouer lors de son exécution.
Confidentialité
Votre SQL est formaté dans votre navigateur avec JavaScript. Il n’est ni envoyé, ni stocké, ni inclus dans les données analytiques. L’outil ne se connecte jamais à une base de données.