포맷터 · 2026년 7월 7일 · 읽는 시간 4분
쿼리 로그 해석하려고 SQL 포맷터 만들었음
ORM이 생성한 쿼리 로그는 한 줄로 뭉쳐 있어서 어디서 문제가 생겼는지 파악하기 힘들다.
SQL 포맷팅이 필요한 상황
꽤 자주 마주침:
- ORM 쿼리 로그 디버깅 → JPA/Hibernate, Django ORM 생성 쿼리
- DB 마이그레이션 파일 → 한 줄로 된 긴 쿼리 정리
- 레거시 쿼리 파악 → 유지보수 시 기존 쿼리 읽기
- 코드 리뷰 → SQL이 인라인으로 박혀 있어서 읽기 힘들 때
- 느린 쿼리 분석 → slow query log에서 가져온 쿼리 정리
- DBA와 협업 → 정리된 형태로 공유
Hibernate show_sql=true로 켜놓으면 나오는 쿼리들 진짜 읽기 힘들다. 들여쓰기도 없고 키워드도 대소문자 섞여있고.
포맷팅 전후 비교
포맷팅 전:
select u.id, u.name, u.email, o.order_date, o.total_amount, p.product_name from users u inner join orders o on u.id = o.user_id inner join order_items oi on o.id = oi.order_id inner join products p on oi.product_id = p.id where u.created_at >= '2026-01-01' and o.status = 'completed' order by o.order_date desc limit 100
포맷팅 후:
SELECT u.id, u.name, u.email, o.order_date, o.total_amount, p.product_name FROM users u INNER JOIN orders o ON u.id = o.user_id INNER JOIN order_items oi ON o.id = oi.order_id INNER JOIN products p ON oi.product_id = p.id WHERE u.created_at >= '2026-01-01' AND o.status = 'completed' ORDER BY o.order_date DESC LIMIT 100
조인이 3개인지 4개인지, WHERE 조건이 뭔지 한눈에 들어온다.
기존 방법의 문제
- DataGrip / DBeaver → 쿼리 툴 켜서 붙여넣고 포맷팅, 매번 귀찮음
- 온라인 SQL 포맷터 → 광고 넘치고 데이터가 서버로 가는 느낌
- VS Code SQL 확장 → 설치 필요, 가볍게 쓰기엔 무거움
- 수동 정리 → 시간도 걸리고 실수도 생김
그래서 만들었음
주요 기능:
- SQL 자동 들여쓰기 포맷팅
- 키워드 대문자 자동 변환 (SELECT, FROM, WHERE 등)
- SQL 방언 선택 (MySQL, PostgreSQL, SQLite, Oracle, T-SQL)
- SQL 압축 (공백 제거)
- 결과 복사 버튼
추가 기능:
- 서브쿼리 들여쓰기 처리
- CTE (WITH 절) 포맷팅
- 주석 유지
- 여러 쿼리 구분 처리 (세미콜론 기준)
자주 쓰는 SQL 패턴들
-- CTE 사용 예시
WITH monthly_sales AS (
SELECT
DATE_FORMAT(order_date, '%Y-%m') AS month,
SUM(total_amount) AS revenue
FROM orders
WHERE status = 'completed'
GROUP BY month
)
SELECT
month,
revenue,
LAG(revenue) OVER (ORDER BY month) AS prev_revenue
FROM monthly_sales;CTE나 윈도우 함수 쓴 복잡한 쿼리도 포맷팅하면 구조 파악이 훨씬 쉽다.
실제로 써보니
좋은 점:
- ORM 로그 복붙하면 바로 읽기 좋게 정리됨
- 키워드 대문자 변환 → 컨벤션 맞추기 편함
- MySQL, PostgreSQL 방언 구분 → DB에 맞는 포맷
한계:
- 실행 계획 분석은 안 됨
- 쿼리 성능 최적화 제안은 없음
- 매우 복잡한 쿼리는 포맷팅이 완벽하지 않을 수 있음
사용법
- SQL 쿼리 붙여넣기
- DB 방언 선택 (필요시)
- 자동으로 포맷팅됨
- 복사 버튼으로 가져가기
써보기
ORM 로그 디버깅할 때 옆에 띄워두면 편함.
#SQL포맷터 #쿼리정리 #ORM디버깅 #데이터베이스 #개발도구