Formater du SQL en ligne — indenter les requêtes
Mettre en forme du SQL (MySQL, PostgreSQL et autres dialectes, casse des mots-clés, indentation)
Traitement dans le navigateur · aucun envoi de fichier
Présentation
Une requête copiée depuis un journal ou un ORM arrive souvent sur une seule longue ligne, ou avec une indentation incohérente, ce qui la rend difficile à lire et à relire. Cet outil découpe le SQL en clauses comme SELECT, FROM et WHERE et l’indente de façon cohérente. Le résultat se met à jour pendant la saisie.
Mode d’emploi
- Collez votre SQL dans le champ de saisie. Plusieurs instructions séparées par des points-virgules sont acceptées.
- Choisissez le dialecte qui correspond à votre base de données.
- Mettez les mots-clés en majuscules, en minuscules, ou laissez-les tels que saisis.
- Choisissez une indentation de 2 espaces, 4 espaces ou une tabulation, puis copiez le résultat.
Fonctionnement
- La mise en forme est assurée par la bibliothèque open source
sql-formatter. Elle découpe la saisie en jetons, puis décide des sauts de ligne et de l’indentation selon la profondeur des clauses et des parenthèses. - Les dialectes pris en charge sont SQL standard, MySQL, PostgreSQL, MariaDB, SQLite, BigQuery, Oracle (PL/SQL) et SQL Server (T-SQL). Le dialecte modifie la lecture des délimiteurs d’identifiants (
`,",[ ]), des marqueurs de paramètres (?,$1,@name) et des opérateurs. - Les paramètres MyBatis
#{id},#{name,jdbcType=VARCHAR}et${table}sont conservés tels quels dans tous les dialectes. En MySQL,#ouvre normalement un commentaire, mais#{est traité comme un paramètre. Un paramètre réparti sur plusieurs lignes est aussi conservé ; les accolades imbriquées comme#{list[${i}]}ne sont pas prises en charge. - Paramètres liés :
?et:nameen SQL standard, MySQL et MariaDB ;$1et:nameen PostgreSQL ;:nameen Oracle ;@nameen SQL Server et BigQuery ; SQLite accepte?,?1,:name,@nameet$name. - Les erreurs indiquent la ligne, la colonne et le texte où l’analyse s’est arrêtée.
- L’option de casse ne s’applique qu’aux mots réservés. Les chaînes littérales, les commentaires et les identifiants, y compris les noms de tables et de colonnes accentués, ne sont pas modifiés.
- L’option tabulation utilise un caractère de tabulation par niveau d’indentation.
- L’outil ne fait que remettre en forme. Il n’exécute pas la requête et n’en vérifie pas le sens.
Exemples
Saisie :
select id, name from users where age > 20 and city = 'Montréal' order by name
Résultat (SQL standard, majuscules, 2 espaces) :
SELECT
id,
name
FROM
users
WHERE
age > 20
AND city = 'Montréal'
ORDER BY
name
Questions fréquentes
Ma requête est-elle envoyée à un serveur ?
Non. La mise en forme se fait dans votre navigateur avec la bibliothèque sql-formatter, et les requêtes ne sont ni transmises ni enregistrées. Évitez tout de même d’afficher sur un écran partagé des requêtes contenant de vrais mots de passe ou des données personnelles.
Quel dialecte choisir ?
Choisissez la base de données que vous utilisez. La syntaxe propre au dialecte est alors bien reconnue, comme les accents graves de MySQL, les conversions `::` et les paramètres `$1` de PostgreSQL. En cas de doute, commencez par SQL standard.
La mise en forme peut-elle changer le comportement de ma requête ?
Seuls les espaces, les sauts de ligne et la casse des mots-clés changent. Les chaînes littérales, les commentaires et les identifiants gardent leur contenu, et le changement de casse ne touche jamais les valeurs entre guillemets : la requête se comporte de la même façon.
Que faire si une erreur s’affiche ?
Un guillemet non refermé ou un symbole que le dialecte choisi ne prend pas en charge peut bloquer l’analyse. Vérifiez l’endroit indiqué dans le message ou essayez un autre dialecte. C’est un outil de mise en forme, pas un validateur : il ne détectera pas toutes les erreurs de votre SQL.