Formateur SQL/ MySQL · PostgreSQL
Embellissez ou compressez des requetes SQL instantanement. Prend en charge MySQL, PostgreSQL et le SQL generique.
Cet outil a-t-il résolu votre problème ?
Exemples de code
Python (sqlparse)
import sqlparse
sql = "select id,name from users where active=1"
# Format / beautify
formatted = sqlparse.format(
sql,
reindent=True,
keyword_case='upper',
identifier_case='lower',
strip_comments=False,
indent_width=2,
)
print(formatted)
# SELECT id, name
# FROM users
# WHERE active = 1
# Minify
minified = sqlparse.format(
sql,
strip_whitespace=True,
keyword_case='upper',
)Node.js (sql-formatter)
import { format } from 'sql-formatter';
const sql = `select id,name,email
from users where status='active'`;
// Format for MySQL
const formatted = format(sql, {
language: 'mysql',
tabWidth: 2,
keywordCase: 'upper',
linesBetweenQueries: 2,
});
// Format for PostgreSQL
const pgFormatted = format(sql, {
language: 'postgresql',
tabWidth: 2,
keywordCase: 'upper',
});
console.log(formatted);
// SELECT
// id,
// name,
// email
// FROM users
// WHERE status = 'active'CLI (pgFormatter)
# Install pgFormatter (Perl) # https://github.com/darold/pgFormatter cpanm pgFormatter # Format a file pg_format query.sql -o formatted.sql # Format from stdin echo "select * from users" | pg_format # Options pg_format query.sql --spaces 2 --keyword-case 1 --function-case 2 # Using prettier-plugin-sql (Node) npx prettier --plugin prettier-plugin-sql --parser sql query.sql
Go
package main
import (
"fmt"
"strings"
"unicode"
)
// Simple SQL keyword uppercaser
func formatSQL(sql string) string {
keywords := []string{
"SELECT", "FROM", "WHERE",
"JOIN", "LEFT JOIN", "INNER JOIN",
"GROUP BY", "ORDER BY", "HAVING",
"INSERT INTO", "VALUES", "UPDATE",
"SET", "DELETE FROM", "LIMIT",
}
result := sql
for _, kw := range keywords {
lower := strings.ToLower(kw)
result = strings.ReplaceAll(
result, lower,
"\n"+kw,
)
}
return strings.TrimSpace(result)
}
// For production use, consider:
// github.com/xwb1989/sqlparser (MySQL)
// github.com/pganalyze/pg_query_go (PostgreSQL)
func main() {
sql := "select id from users where id=1"
fmt.Println(formatSQL(sql))
}Questions frequemment posees
Qu'est-ce que le formatage / l'embellissement SQL ?
Le formatage SQL (embellissement) transforme une requete SQL compacte ou ecrite de maniere incoherente en une forme lisible et indentee de facon coherente. Il ajoute des sauts de ligne avant les clauses principales (SELECT, FROM, WHERE, JOIN, etc.) et met les mots-cles en majuscules. Cela ne change pas ce que fait la requete — seulement son apparence.
Prend-il en charge la syntaxe MySQL et PostgreSQL ?
Le formateur gere la syntaxe SQL commune partagee par MySQL, PostgreSQL et la plupart des autres SGBDR. Les fonctionnalites specifiques aux dialectes comme l'operateur de conversion :: de PostgreSQL ou les identifiants en backtick de MySQL sont correctement tokenises. Selectionnez votre dialecte pour indiquer les conventions de syntaxe que vous utilisez.
A quoi sert la minification SQL ?
La minification supprime tous les espaces et commentaires superflus pour produire la forme la plus compacte d'une requete. C'est utile pour integrer du SQL dans des chaines de code, envoyer du SQL dans des logs ou reduire la verbosite des journaux de requetes. Les requetes minifiees sont fonctionnellement identiques a leurs versions formatees.
Comment formater des requetes SQL en ligne de commande ?
Pour PostgreSQL, utilisez pg_format (Perl). Pour MySQL, utilisez le package Python mysqlformat. Vous pouvez aussi utiliser sqlparse en Python : import sqlparse; sqlparse.format(sql, reindent=True, keyword_case='upper'). Voir les exemples de code ci-dessous.
Pourquoi mes commentaires sont-ils supprimes apres la minification ?
La minification supprime intentionnellement les commentaires SQL (-- commentaires sur une ligne et /* commentaires bloc */) pour reduire la taille. Si vous devez conserver les commentaires, utilisez plutot le mode de formatage, qui conserve tous les commentaires et les reformate au bon niveau d'indentation.
Le formateur peut-il gerer les CTE (clauses WITH) ?
Oui. Les expressions de table communes WITH ... AS (...) sont reconnues. Le mot-cle WITH demarre un nouveau bloc. Les instructions SELECT imbriquees dans les CTE sont egalement indentees de maniere appropriee.