SQL フォーマッター/ MySQL · PostgreSQL
SQL クエリを即座に整形または圧縮。MySQL、PostgreSQL、汎用 SQL に対応。
このツールは役に立ちましたか?
コード例
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))
}よくある質問
SQL フォーマット(整形)とは何ですか?
SQL フォーマット(整形)は、コンパクトまたは不統一に書かれた SQL クエリを、読みやすく一貫したインデントの形式に変換します。主要な句(SELECT、FROM、WHERE、JOIN など)の前に改行を追加し、キーワードを大文字にします。クエリの動作は変わらず、見た目だけが変わります。
MySQL と PostgreSQL の構文に対応していますか?
フォーマッターは MySQL、PostgreSQL、その他多くの RDBMS に共通する SQL 構文を処理します。PostgreSQL の :: キャスト演算子や MySQL のバッククォート識別子など、方言固有の機能も正しくトークン化されます。使用する構文規則を示すために方言を選択してください。
SQL の圧縮(ミニファイ)は何に使いますか?
圧縮は余分な空白とコメントをすべて削除し、最もコンパクトなクエリ形式を生成します。コード文字列に SQL を埋め込む場合、ログで SQL を送信する場合、クエリログの冗長性を削減する場合に便利です。圧縮されたクエリは整形版と機能的に同一です。
コマンドラインで SQL をフォーマットするには?
PostgreSQL には pg_format(Perl)を使用します。MySQL には Python の mysqlformat パッケージを使用します。Python の sqlparse も使用できます:import sqlparse; sqlparse.format(sql, reindent=True, keyword_case='upper')。下記のコード例を参照してください。
圧縮後にコメントが削除されるのはなぜですか?
圧縮モードはサイズを削減するために SQL コメント(-- 単一行コメントと /* ブロック */ コメント)を意図的に除去します。コメントを保持する必要がある場合は、代わりにフォーマットモードを使用してください。コメントは正しいインデントレベルで保持されます。
CTE(WITH 句)を処理できますか?
はい。WITH ... AS (...) 共通テーブル式が認識されます。WITH キーワードは新しいブロックを開始します。CTE 内のネストされた SELECT 文も適切にインデントされます。