SQL 정렬·한 줄 압축
로그에 찍힌 긴 쿼리나 ORM이 만든 SQL을 읽을 때 좋아요. 쿼리는 서버로 보내지 않고 이 기기에서만 정리해요.
엉킨 SQL을 한눈에 읽히게
로그나 ORM(JPA·MyBatis·Prisma 등)이 찍어 주는 SQL은 보통 한 줄로 길게 이어져 있어 조건이 어디서 끝나는지 보기 어려워요. 쿼리를 붙여넣으면 SELECT, FROM, JOIN, WHERE, GROUP BY 같은 절마다 줄을 바꾸고, 괄호 안 하위 쿼리는 한 단계 더 들여써요. AND·OR는 줄 앞에 두어 조건을 하나씩 세어 보기 쉽게 했어요. 여러 문장이 ;로 이어져 있으면 문장 사이에 빈 줄을 넣어요.
옵션
- SQL 종류: DB마다 따옴표·변수·키워드가 달라서 맞는 종류를 고르면 더 정확해요. 예를 들어 MySQL의
`백틱`, PostgreSQL의$$ 함수 본문 $$, SQL Server의[대괄호], 오라클의:변수를 그 종류로 읽어요. - 키워드 대소문자: 키워드·자료형·함수 이름을 대문자나 소문자로 통일해요. 테이블·컬럼 이름과 문자열 안의 글자는 바꾸지 않아요.
- 표 모양은 키워드를 왼쪽 열에 맞춰 세우는 방식이고, 쉼표를 줄 앞에는 컬럼 목록의 쉼표를 다음 줄 앞으로 옮겨 컬럼을 넣고 빼기 쉽게 해요.
한 줄로 압축
‘한 줄로 압축’은 --·/* */ 주석과 줄바꿈을 지우고 공백을 하나로 줄여요. 따옴표 안의 문자열과 식별자는 한 글자도 바꾸지 않고, MySQL의 /*! … */나 오라클 힌트 /*+ … */처럼 의미가 있는 주석은 남겨요. 코드 안에 쿼리 문자열로 넣을 때 편해요.
정리 엔진은 오픈소스 sql-formatter(MIT 라이선스)를 쓰고, 정리 전후 쿼리가 같은 결과를 내는지 SQLite로 실행해 확인했어요. 문법 검사기가 아니라서 틀린 SQL도 모양만 정리될 수 있으니 실행 전에는 DB에서 확인하세요.
참고한 자료
자주 묻는 질문
정리하면 쿼리 뜻이 바뀌지 않나요?
공백·줄바꿈과 키워드 대소문자만 바꿔요. 문자열·식별자는 그대로라 같은 쿼리예요. 다만 대소문자를 구분하는 DB에서 따옴표 없이 쓴 이름은 ‘키워드’ 옵션을 ‘그대로’로 두세요.
‘정리하지 못했어요’가 나와요.
고른 SQL 종류에 없는 문법이거나 따옴표·괄호가 짝이 안 맞는 경우예요. SQL 종류를 바꾸거나 끝부분이 잘리지 않았는지 확인하세요.
MyBatis의 #{변수}나 ? 자리표시자도 되나요?
?, :name, $1 같은 자리표시자는 그대로 둬요. MyBatis의 #{}·${}는 SQL 문법이 아니어서 결과가 어색할 수 있어요.
함께 쓰면 좋은 도구
- JSON 정리 (보기 좋게 들여쓰기·검증·압축)JSON을 보기 좋게 들여쓰기, 오류 위치 표시, 한 줄 압축, 키 정렬, 문자열 이스케이프
- SQL로 CSV·엑셀 조회 (브라우저 안 SQLite)CSV·엑셀 파일을 표로 불러와 SELECT·GROUP BY·JOIN 같은 SQL로 걸러 보고 결과를 CSV·엑셀로
- 코드 정렬기 (JS·TS·CSS·HTML·마크다운·YAML 포맷터)들여쓰기가 엉킨 자바스크립트·타입스크립트·JSX·CSS·SCSS·HTML·Vue·마크다운·YAML·JSON을 Prettier 규칙으로 한 번에 정리
- XML 정리·검증·XPath 테스트 (보기 좋게 들여쓰기·압축)XML을 보기 좋게 들여쓰기·한 줄 압축, 형식 오류 위치 표시, XPath 식으로 원하는 값 찾기, 구조 통계
- 정규식 테스트 (정규표현식 매칭 확인)패턴과 플래그로 일치하는 부분을 강조 표시, 그룹 값 표, 바꾸기 미리보기, 자주 쓰는 패턴
- Base64 인코딩·디코딩 (글자·파일 ↔ Base64)글자(한글 UTF-8)를 Base64로, Base64를 글자로, 파일·이미지를 data URI로, Base64를 파일로 저장