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 문도 적절하게 들여쓰기됩니다.