SQL Formatter : Formater et embellir SQL
SQL formatter : embellissez les requêtes MySQL, PostgreSQL, SQL Server, SQLite et plus. Casse des mots-clés, indentation et minification. Gratuit.
Qu'est-ce que SQL Formatter ?
SQL Formatter est un outil basé sur navigateur qui transforme les requêtes SQL non formatées, compressées ou au style incohérent en code propre et lisible avec une indentation correcte et une casse cohérente des mots-clés. Les développeurs et analystes de données rencontrent constamment du SQL mal formaté — requêtes écrites inline dans le code applicatif, sorties de logs de debug ORM, SQL copié depuis des documentations ou requêtes ayant évolué par éditions incrémentales et perdu leur structure.
L'outil prend ce SQL brut et applique un formatage conscient du dialecte grâce à la bibliothèque sql-formatter, qui comprend les règles de syntaxe de Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) et SQLite. Vous pouvez choisir votre dialecte cible, définir la largeur d'indentation, basculer les mots-clés en majuscules et minifier le résultat. Tout le traitement s'exécute localement dans votre navigateur sans serveur, inscription ni coût.
Fonctionnalités principales
- Formater SQL avec indentation correcte — Utilise la bibliothèque
sql-formatteravectabWidthconfigurable et espacementlinesBetweenQueries: 2entre plusieurs instructions dans un même collage. - Support de multiples dialectes SQL — Choisissez parmi Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) et SQLite. La sélection du dialecte affecte la façon dont le formatter gère la syntaxe spécifique au dialecte et les mots réservés.
- Paramètres d'indentation personnalisables — Sélectionnez 2 ou 4 espaces d'indentation depuis la barre d'action.
- Bascule majuscules des mots-clés — Un bouton bascule entre
keywordCase: 'upper'etkeywordCase: 'preserve'. Quand actif (par défaut), tous les mots-clés SQL sont standardisés en majuscules (SELECT,FROM,WHERE,JOIN, etc.). Quand désactivé, la casse est laissée telle quelle. - Minifier SQL — Supprime les espaces superflus et produit une sortie sur une seule ligne avec des espaces simples entre les tokens.
- Copier la sortie formatée dans le presse-papiers — API Clipboard avec fallback textarea.
- Télécharger en fichier .sql — Sauvegarde la sortie sous
formatted.sqlavec le type MIMEtext/sql. - Raccourcis clavier — Ctrl+Entrée (Cmd+Entrée) formate ; Ctrl+Shift+M (Cmd+Shift+M) minifie.
Comment utiliser SQL Formatter
Étape 1 : Coller votre SQL
Ouvrez l'outil à /developer/code/sql-formatter. Collez votre requête ou vos requêtes SQL dans le panneau d'entrée à gauche. Les instructions multiples séparées par des points-virgules sont supportées — le formatter place deux lignes vides entre chaque instruction dans la sortie.
Étape 2 : Sélectionner le dialecte et les options
Dans la barre d'action sous les panneaux :
- Choisir un dialecte depuis le menu déroulant : Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) ou SQLite. Faites correspondre ceci au moteur de base de données sur lequel votre requête sera exécutée pour un formatage optimal.
- Choisir l'indentation : 2 ou 4 espaces.
- Basculer Uppercase : Le bouton Uppercase est actif par défaut. Quand actif, tous les mots-clés SQL sont normalisés en majuscules. Cliquez pour le désactiver et préserver votre casse originale.
Étape 3 : Cliquer sur Format
Cliquez sur Format ou appuyez sur Ctrl+Entrée / Cmd+Entrée. Le SQL formaté apparaît dans le panneau de sortie en lecture seule. L'outil affiche le dialecte dans l'entrée d'historique (par ex. « Formatted POSTGRESQL (2,4 Ko) »).
Exemple d'entrée — requête inline depuis la sortie de debug d'application :
select u.id,u.email,u.created_at,count(o.id) as order_count,sum(o.total_amount) as total_spent from users u left join orders o on u.id=o.user_id where u.active=true and u.created_at>='2024-01-01' group by u.id,u.email,u.created_at having count(o.id)>0 order by total_spent desc limit 25
Sortie avec dialecte PostgreSQL, indentation 2 espaces, uppercase actif :
SELECT
u.id,
u.email,
u.created_at,
COUNT(o.id) AS order_count,
SUM(o.total_amount) AS total_spent
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE
u.active = TRUE
AND u.created_at >= '2024-01-01'
GROUP BY
u.id,
u.email,
u.created_at
HAVING
COUNT(o.id) > 0
ORDER BY
total_spent DESC
LIMIT
25
Étape 4 : Minifier (optionnel)
Cliquez sur Minify ou appuyez sur Ctrl+Shift+M / Cmd+Shift+M pour produire une chaîne SQL sur une seule ligne. Les paramètres uppercase et dialecte s'appliquent toujours lors de la minification. Le SQL minifié est utile pour intégrer des requêtes dans des variables d'environnement, des chaînes de configuration ou des diffs de comparaison où les changements de ligne seraient bruyants.
Sortie minifiée de la même requête :
SELECT u.id, u.email, u.created_at, COUNT(o.id) AS order_count, SUM(o.total_amount) AS total_spent FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.active = TRUE AND u.created_at >= '2024-01-01' GROUP BY u.id, u.email, u.created_at HAVING COUNT(o.id) > 0 ORDER BY total_spent DESC LIMIT 25
Étape 5 : Copier ou télécharger
Cliquez sur Copy pour placer la sortie dans votre presse-papiers. Cliquez sur Download pour sauvegarder formatted.sql. Les deux boutons sont désactivés jusqu'à ce qu'une sortie existe dans le panneau droit.
Exemples pratiques
Nettoyer une requête de debug ORM
La sortie de debug de Django ou Rails enregistre les requêtes sur une seule ligne avec une casse mixte. Une entrée typique du log de requête Django :
select "products"."id", "products"."name", "products"."price", "products"."stock_count" from "products" where "products"."category_id" = 12 and "products"."active" = true order by "products"."name" asc
Sélectionnez le dialecte PostgreSQL (Django utilise les guillemets doubles de style PostgreSQL), activez les majuscules et cliquez sur Format. La sortie montre une indentation correcte avec des mots-clés en majuscules tout en préservant les identifiants entre guillemets doubles.
Réviser une procédure stockée
Une procédure stockée T-SQL a été versionnée comme un bloc unique non formaté. Sélectionnez le dialecte T-SQL (SQL Server) et cliquez sur Format pour obtenir une version indentée et lisible avec une casse cohérente des mots-clés. La version formatée est plus facile à réviser dans un diff de pull request et peut être réintégrée pour remplacer l'original.
Intégrer une requête dans une configuration
Votre application stocke une requête de rapport dans un fichier de configuration YAML sous forme de chaîne sur une seule ligne. Construisez et testez la requête avec un formatage correct dans SQL Formatter, puis cliquez sur Minify pour produire la version compacte à intégrer. Conserver la version formatée dans un commentaire à côté de la version minifiée rend le fichier de configuration maintenable.
# Version formatée (pour la lisibilité) :
# SELECT product_id, SUM(quantity) AS units_sold
# FROM order_items
# WHERE order_date >= :start_date
# GROUP BY product_id
# ORDER BY units_sold DESC
report_query: "SELECT product_id, SUM(quantity) AS units_sold FROM order_items WHERE order_date >= :start_date GROUP BY product_id ORDER BY units_sold DESC"
Conseils et bonnes pratiques
Faites correspondre le dialecte à votre base de données. Bien que la plupart du formatage SQL soit indépendant du dialecte, la bibliothèque sql-formatter gère la syntaxe spécifique au dialecte (comme la syntaxe de cast :: dans PostgreSQL, TOP dans T-SQL et les différences de placement de LIMIT/OFFSET) de façon plus précise avec le bon dialecte sélectionné.
Utilisez les majuscules pour la lisibilité en code review. La convention SQL des mots-clés en majuscules est largement reconnue et rend les composants structurels (SELECT, FROM, WHERE, JOIN) visuellement distincts des identifiants et des littéraux. Activez le toggle uppercase avant de formater du code qui sera revu ou versionné.
Formatez avant de comparer. Lors de la comparaison de deux versions d'une requête, formatez les deux en premier avec les mêmes paramètres. Les diffs sur du SQL non formaté produisent une sortie bruyante car un seul changement structurel peut affecter de nombreuses lignes. Les diffs de SQL formaté ne montrent que les changements significatifs.
Les instructions multiples fonctionnent. Vous pouvez coller un fichier de migration ou un script avec plusieurs instructions CREATE TABLE, INSERT et ALTER TABLE séparées par des points-virgules. Le formatter produit deux lignes vides entre chaque instruction pour une séparation visuelle.
Enregistrez des presets pour les conventions d'équipe. Les supporters de Glyph Widgets peuvent enregistrer les paramètres de dialecte, d'indentation et de majuscules comme un preset nommé. Créez un preset par projet (par ex. « MySQL 2-espaces majuscules ») pour appliquer les conventions de votre équipe en un clic lors des changements de projet.
Problèmes courants et dépannage
Message d'erreur après avoir cliqué sur Format — La bibliothèque sql-formatter lance une erreur sur une syntaxe qu'elle ne peut pas reconnaître. Les causes courantes sont : extensions propriétaires non supportées par le dialecte sélectionné, code procédural (corps de fonctions PL/pgSQL, blocs T-SQL BEGIN/END) ou SQL mélangé avec une syntaxe de template de couche applicative comme {{ variable }} ou #{variable}. Supprimez ou commentez les parties non supportées avant de formater.
Les mots-clés ne sont pas mis en majuscules — Confirmez que le bouton Uppercase est dans son état actif (rempli, style primaire). Si le bouton est en style outline, la casse est configurée sur preserve. Cliquez une fois pour activer le mode majuscules.
Le mauvais dialecte provoque des sauts de ligne inattendus — Les règles de saut de ligne de la bibliothèque sql-formatter varient selon le dialecte. Si une requête se formate étrangement, essayez Standard SQL comme dialecte. Par exemple, les dialectes PL/SQL et T-SQL peuvent gérer le formatage des sous-requêtes différemment de Standard SQL.
La sortie minifiée a encore des espaces multiples par endroits — L'approche de minification réduit toutes les séquences d'espaces à des espaces simples. Cependant, si le formatter insère des sauts de ligne intentionnels dans des littéraux de chaîne ou des commentaires, un seul espace les remplace. Le contenu entre guillemets n'est pas affecté — les espaces dans les chaînes entre guillemets simples sont préservés.
Erreur « Please enter SQL to format » — L'entrée est vide. Collez une requête SQL dans le panneau gauche avant de cliquer sur Format.
Le fichier téléchargé s'appelle formatted.sql à chaque fois — C'est le nom de fichier fixe. Renommez le fichier après le téléchargement pour correspondre à la convention de nommage de votre projet.
Confidentialité et sécurité
SQL Formatter traite tout le texte SQL localement dans votre navigateur en utilisant la bibliothèque sql-formatter. Aucun texte de requête — y compris les noms de tables, noms de colonnes, valeurs de données, identifiants dans les chaînes de connexion ou tout autre contenu — n'est envoyé à un serveur. L'outil fonctionne hors ligne une fois la page chargée. Cela le rend sûr pour une utilisation avec des noms de schémas propriétaires, de la logique métier interne ou des requêtes contenant des données d'exemple.
Questions fréquemment posées
SQL Formatter est-il gratuit ? Oui, entièrement gratuit. Toutes les options de formatage, minification et dialecte sont disponibles sans frais ni compte. Les fonctionnalités pour supporters de Glyph Widgets comme les presets enregistrés et l'historique de session sont disponibles pour les supporters Ko-fi, mais le formatage SQL principal est sans restriction.
Fonctionne-t-il hors ligne ? Oui. Une fois la page chargée, tout le formatage s'exécute localement dans votre navigateur en JavaScript. Vous pouvez vous déconnecter d'internet et continuer à formater des requêtes sans interruption.
Mon SQL est-il en sécurité ? Oui. Votre SQL n'est jamais transmis à aucun serveur. Il est traité entièrement dans la mémoire du navigateur et est supprimé quand vous videz l'outil ou fermez l'onglet. Vous pouvez coller en toute sécurité des requêtes contenant des noms de tables internes, de la logique métier ou des valeurs de données d'exemple.
Quels dialectes SQL sont supportés ? L'outil supporte Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) et SQLite. Ces dialectes correspondent directement au paramètre language de la bibliothèque sql-formatter.
L'outil valide-t-il la syntaxe SQL ? La bibliothèque sql-formatter effectue suffisamment d'analyse pour formater le SQL et lancera une erreur sur certaines syntaxes qu'elle ne peut pas gérer, mais ce n'est pas un validateur SQL au sens strict. Pour une véritable validation de syntaxe, utilisez EXPLAIN ou le planificateur de requêtes de votre moteur de base de données.
Puis-je formater plusieurs requêtes à la fois ? Oui. Collez plusieurs instructions séparées par des points-virgules. Le formatter place deux lignes vides entre chaque instruction formatée, rendant les limites entre les requêtes clairement visibles.
Que fait exactement le toggle Uppercase ? Quand activé, le formatter définit keywordCase: 'upper' dans les options de sql-formatter, ce qui convertit tous les mots réservés SQL en majuscules — SELECT, FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, LIMIT, les noms de fonctions comme COUNT, SUM, MAX, etc. Quand désactivé, keywordCase: 'preserve' laisse la casse de votre entrée inchangée.
Le formatter gère-t-il les CTEs (Common Table Expressions) ? Oui. Les CTEs (WITH ... AS (...)) sont formatées correctement avec une indentation appropriée pour la définition du CTE et la requête principale qui suit. Cela s'applique à tous les dialectes supportés.
Quel est le raccourci clavier pour formater ? Ctrl+Entrée sur Windows/Linux ou Cmd+Entrée sur macOS. Pour minifier, utilisez Ctrl+Shift+M sur Windows/Linux ou Cmd+Shift+M sur macOS.
Puis-je formater des instructions DDL comme CREATE TABLE ? Oui. La bibliothèque sql-formatter gère le DDL (CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, etc.) ainsi que le DML (SELECT, INSERT, UPDATE, DELETE) et le DCL (GRANT, REVOKE). Les scripts mixtes avec DDL et DML se formatent correctement quand séparés par des points-virgules.
Outils connexes
JSON Formatter — Formatez et validez des données JSON avec validation de schéma, génération de schéma et un visualiseur arborescent interactif.
XML Formatter — Formatez et validez des documents XML avec indentation configurable et minification.
YAML Formatter — Formatez des fichiers de configuration YAML et convertissez-les en JSON.
Essayez SQL Formatter maintenant : SQL Formatter