Tool overview
SQL 포맷터이란?
SQL 포맷터은(는) 키워드 대소문자를 정리하여 SQL 쿼리 포맷 및 압축 위한 개발자 도구입니다.
왜 SQL 포맷터을(를) 사용하나요?
키워드 대소문자를 정리하여 SQL 쿼리 포맷 및 압축할 때 가독성과 작업 속도를 높이며 서버로 데이터를 보내지 않습니다.
주요 기능
클라이언트 사이드 프라이버시, 즉시 결과, 원클릭 복사. 키워드 대소문자를 정리하여 SQL 쿼리 포맷 및 압축
사용 방법
위 도구에서 정확한 결과를 얻기 위한 단계입니다.
- 왼쪽 패널에 SQL을 붙여넣거나 .sql 파일을 업로드하거나 빈 상태에 드래그 앤 드롭합니다.
- 헤더 드롭다운에서 방언 선택(13개: Postgres, Snowflake, BigQuery, Spark, Oracle PL/SQL 등).
- Strip comments로 출력 전 -- 및 /* */ 주석 제거; 들여쓰기 SQL은 Beautify, 한 줄은 Minify.
- 포맷된 SQL을 마이그레이션, ORM, 웨어하우스 워크시트, 임베디드 문자열 또는 문서에 복사합니다.
SQL Formatter 참조
방언 목록, 워크스페이스 컨트롤, Beautify vs Minify 동작, 사용 사례, 주석 제거 규칙.
SQL Formatter 가이드 — 여기서 시작
이 페이지는 Dev Tools Suite에서 SQL을 포맷하고 minify하는 정식 가이드입니다. 읽으면서 위의 SQL Formatter를 사용하거나 아래 섹션으로 이동하세요. 모든 파싱과 포맷은 브라우저의 sql-formatter로 실행되며, 쿼리·스키마 이름·샘플 데이터는 서버에 업로드되지 않습니다.
SQL Formatter가 하는 일
SQL Formatter는 사람을 위해 여러 줄 SQL을 beautify하고 전송을 위해 minify합니다. 키워드를 자동 대문자화(SELECT, FROM, WHERE)하고 절 인식 들여쓰기를 적용하며 sql-formatter 라이브러리의 방언별 문법을 따릅니다 — 많은 IDE 확장과 CLI 포맷터와 같은 엔진입니다.
얻는 것
- 대칭 듀얼 페인: 왼쪽 SQL 입력, 오른쪽 포맷 또는 minify 출력
- 코어 관계형, 클라우드 웨어하우스, 빅데이터, 엔터프라이즈로 묶인 13개 방언 파서
- Beautify·Minify 모드, 라이브 자동 포맷(디바운스), 명시적 Process 버튼
- 패널 헤더의 방언 선택기와 Strip comments — 에디터 높이를 빼앗는 추가 행 없음
- 큰 SELECT 트리용 접이식 포맷 출력(Beautify)
- 방언 파서가 입력을 읽지 못할 때 줄·열 힌트가 있는 파싱 오류
- 선택적 URL 공유: ?mode=minify&dialect=postgresql 로 모드와 방언 유지
이 도구를 사용할 때
- 로그, BI, ORM에서 붙여넣은 임시 SQL을 리뷰 전 읽기 쉽게 정리
- 앱 코드에 한 줄 minify 문자열로 임베드
- PostgreSQL, Snowflake, BigQuery, Spark, Oracle에서 방언 키워드 인식 필요
- 커밋·배포 전 블록·줄 주석 제거
기대하지 말 것
- 의미 검증 — 포맷 성공이 서버 실행 성공을 의미하지 않음
- 자동 쿼리 계획, 성능 린트, 스키마 인식 재작성
- 선택 방언이 다루지 않는 벤더 확장의 완벽 보존
- 서버 측 EXPLAIN 또는 실행 — 레이아웃·공백 도구만
워크스페이스 레이아웃 및 헤더 컨트롤
컨트롤은 SQL QUERY 패널 헤더에 있어 입·출력 에디터 높이가 같습니다. 툴바 아래 별도 옵션 행은 없습니다.
헤더 컨트롤(왼쪽 패널)
| 컨트롤 | 위치 | 기능 |
|---|---|---|
| Dialect dropdown | 헤더, 모드 탭 왼쪽 | sql-formatter 언어 파서 선택(코어, 클라우드, 빅데이터, 엔터프라이즈 그룹) |
| Strip comments | 헤더 체크박스 | 체크 시 Beautify·Minify 전 --, /* */, 방언별 주석 제거 |
| Beautify / Minify | 헤더 모드 탭 | Beautify는 들여쓰기·대문자 키워드, Minify는 공백 축소 |
| Process | 헤더 기본 버튼 | 즉시 재포맷(Ctrl/Cmd+Enter 포함). 입력·옵션 변경 후 ~350ms 자동 포맷 |
| Swap | 중앙 구분선 | 출력을 입력으로 옮겨 현재 모드로 재처리 |
키보드 단축키
- Ctrl/Cmd+Enter — Process
- Ctrl/Cmd+L — 워크스페이스 지우기
지원 SQL 방언(13개 파서)
쿼리가 실행될 환경과 맞는 방언을 항상 선택하세요. 파서는 방언마다 키워드·함수·주석 규칙이 다릅니다. 일반 ANSI 조각에는 Standard SQL이 안전한 기본값입니다.
지원 방언
| 그룹 | 방언 | sql-formatter id | 일반적 용도 |
|---|---|---|---|
| 코어 | Standard SQL | sql | 일반 ANSI 쿼리 |
| 코어 | PostgreSQL | postgresql | Postgres, Supabase, Cockroach(근사) |
| 코어 | T-SQL / SQL Server | transactsql | Microsoft SQL Server, Azure SQL |
| 코어 | MySQL / MariaDB | mysql | MySQL, MariaDB(# 주석) |
| 코어 | SQLite | sqlite | SQLite, 모바일/로컬 DB |
| 클라우드 | Snowflake | snowflake | Snowflake 워크시트, Snowflake dbt |
| 클라우드 | Google BigQuery | bigquery | BigQuery 콘솔, 예약 쿼리 |
| 클라우드 | Amazon Redshift | redshift | Redshift, Postgres 호환 웨어하우스 SQL |
| 빅데이터 | Spark SQL | spark | Databricks, Spark SQL 노트북 |
| 빅데이터 | Trino / Presto | trino | Trino, Presto, 연합 쿼리 엔진 |
| 빅데이터 | Apache Hive | hive | HiveQL, 레거시 Hadoop |
| 엔터프라이즈 | Oracle PL/SQL | plsql | Oracle Database 프로시저·SQL*Plus 스크립트 |
| 엔터프라이즈 | IBM DB2 | db2 | Db2 LUW 및 엔터프라이즈 웨어하우스 |
Cassandra CQL은 미지원 — sql-formatter 방언 집합에 없습니다. Cassandra에는 CQL 전용 포맷터를 사용하세요.
Beautify vs Minify — 어떤 모드를 사용할지
Beautify와 Minify는 같은 방언 선택기와 Strip comments를 공유하지만 출력 형태가 다릅니다.
모드 비교
| Beautify | Minify | |
|---|---|---|
| 출력 형태 | 여러 줄, 들여쓰기 | 한 줄(공백 축소) |
| 키워드 | 대문자(SELECT, FROM, …) | 주석 제거 외 원래 대소문자 |
| 주석(Strip off) | 포맷 전 제거 | 공백만 축소 |
| 주석(Strip on) | 제거 | 제거 |
| 적합 | 문서, 마이그레이션, 코드 리뷰 | 임베디드 문자열, 로그, 페이로드 크기 |
| 출력 보기 | 큰 쿼리용 접이식 트리 | 일반 텍스트 출력 |
예시
입력: select id, name from users where active = 1 — Beautify는 SELECT/FROM/WHERE 대문자 들여쓰기 줄을 만듭니다. Strip 꺼진 Minify는 한 줄: select id, name from users where active = 1.
단계별: 브라우저에서 SQL 포맷
- 사이드바 Formatters에서 SQL Formatter를 엽니다.
- 왼쪽 편집기에 SQL 붙여넣기, 세션 툴바에서 .sql 업로드, 또는 빈 상태에 드래그 앤 드롭.
- DB에 맞는 방언 선택(예: Snowflake 워크시트면 snowflake).
- 출력에 원치 않는 -- 또는 /* */ 가 있으면 Strip comments 선택.
- 읽기 쉬운 SQL은 Beautify, 한 줄 압축은 Minify.
- 오른쪽 출력 확인. 파싱 오류 배너 수정 — 편집 후 클릭해 닫기.
- 복사, 다운로드, 또는 출력을 입력으로 스왑해 다시 실행.
- 같은 설정 공유 시 ?dialect=bigquery&mode=minify 링크 공유.
사용 사례: 마이그레이션 파일 및 ORM
Flyway, Liquibase, ORM 마이그레이션 파일은 SELECT 목록, JOIN, WHERE가 일관된 줄로 나뉘면 리뷰가 쉽습니다.
워크플로
- 마이그레이션 대상에 맞게 postgresql, transactsql, mysql, sqlite 설정.
- 생성 diff 또는 ORM 출력에서 원시 마이그레이션 SQL 붙여넣기.
- 의도를 설명하는 인라인 주석이 있으면 Strip 꺼진 Beautify.
- PR 전 포맷 SQL을 마이그레이션 파일에 복사.
팁
포맷은 라이브 스키마를 검증하지 않습니다. 표면 변경 후 스테이징 DB에서 마이그레이션을 실행하세요.
사용 사례: Snowflake, BigQuery 및 Spark SQL
분석 엔지니어는 Snowflake, BigQuery, Redshift 콘솔에서 대소문자·줄바꿈이 불규칙한 SQL을 자주 복사합니다.
Snowflake / BigQuery / Redshift
- 웨어하우스 함수 파싱을 위해 Beautify 전 snowflake, bigquery, redshift 선택.
- 노트북 -- 세션 메모 포함보내기 시 Strip comments 사용.
- 매우 넓은 SELECT 목록은 Beautify 후 Expand all / Collapse all 사용.
Spark / Trino / Hive
- Databricks 노트북·Spark SQL 파이프라인에는 spark.
- 카탈로그 간 Presto 호환 연합 쿼리에는 trino.
- 레거시 HiveQL에는 hive — 커버리지는 sql-formatter Hive 규칙 따름.
사용 사례: 임베디드 문자열용 SQL minify
앱 코드는 SQL을 템플릿 문자열로 저장하는 경우가 많습니다. Minify는 JavaScript, Python, Go 안 한 줄에 바이트·이스케이프를 줄입니다.
- 읽기 쉬운 SQL을 입력 패널에 붙여넣기.
- 디버그 메모가 남았으면 Strip comments 활성화.
- Minify 모드로 전환.
- 한 줄 출력을 문자열 리터럴에 복사(언어별 따옴표 이스케이프 주의).
소스는 읽기 쉽고 런타임은 압축이 필요하면 beautify 버전은 문서에 두고 빌드 산출물만 minify하세요.
사용 사례: PR 및 코드 리뷰 정리
리뷰 전 SQL을 정규화해 diff가 공백이 아닌 로직에 집중하게 합니다.
- 티켓에 한 줄 SQL이 붙은 비교는 양쪽 beautify.
- 대문자 키워드를 일관 스타일로 — Beautify에서 자동 적용.
- 두 버전 포맷 후 의미적 쿼리 diff가 필요하면 Text Diff로 파이프.
Strip comments — 방언별 동작
Strip comments는 Beautify와 Minify 모두에 적용됩니다. 켜면 구현된 방언 규칙으로 포맷 전 주석을 제거합니다.
주석 제거 동작
| 구문 | Strip 켜짐 시 처리 |
|---|---|
| -- 줄 주석 | 예(공백으로 치환 후 정규화) |
| /* 블록 주석 */ | 예 |
| MySQL # 주석 | 방언이 mysql일 때 예 |
| PostgreSQL $$ 달러 인용 | 보존 — $$…$$ 안은 주석 아님 |
| Redshift 달러 인용 | PostgreSQL 방언과 동일 보존 |
Strip 꺼짐 시(Minify)
Minify는 한 줄로 공백을 축소하지만 주석 텍스트는 유지합니다. 주석을 쿼리와 함께 보낼 때 사용.
수정: 파싱 오류 및 줄 힌트
파서 실패 시 빨간 배너에 줄·열 Parse error가 표시됩니다. 가능하면 입력 편집기가 오류 줄을 강조합니다.
흔한 수정
- 잘못된 방언 — 실제 엔진으로 전환(Oracle 패키지는 plsql, Standard SQL 아님).
- 닫히지 않은 문자열·괄호 — 표시 줄 근처에서 따옴표·괄호 균형.
- 후행 쉼표·미완 절 — SELECT 목록·CTE 완성 후 포맷.
- 비 SQL 붙여넣기 — 쿼리 주변 셸·JSON 래퍼 제거.
- 일반 모드의 방언 전용 구문 — 벤더 방언 시도 또는 미지원 확장 단순화.
유효한 쿼리가 계속 실패하면 sql-formatter가 해당 구문 변형을 다루지 않을 수 있습니다. 업스트림 보고 또는 단순 부분 수동 포맷.
개인정보 — 쿼리는 브라우저에 유지
SQL Formatter는 100% 브라우저에서 실행됩니다. sql-formatter 라이브러리는 동적 로드되며 메인 스레드 JavaScript에서 포맷합니다.
- 쿼리 텍스트는 Dev Tools Suite 서버로 전송되지 않음
- 입력, 출력, 방언, Strip comments 설정은 기기 localStorage에 저장 가능
- URL 매개변수(?dialect=, ?mode=)는 설정만 반영 — SQL 본문 없음
- 프로덕션 데이터·PII 작업 후 워크스페이스 지우기(Ctrl/Cmd+L)
SQL 포맷팅 모범 사례
- Beautify 전 실행 환경과 방언 일치 — 포맷 성공 ≠ 런타임 성공
- 사람용 Beautify, 기계용 Minify
- 비즈니스 규칙 주석은 Strip 끄기,보내기·임베드는 켜기
- 달러 인용·특수 리터럴 minify 출력은 스테이징에서 검증
- 큰 스크립트는 따옴표를 바꾸는 채팅 앱 대신 세션 기록·파일 업로드 사용
- 같은 리포트 쿼리 두 포맷 버전 비교 시 Text Diff 결합
자주 묻는 질문
일반적인 문제와 데이터 프라이버시에 대한 답변입니다.
관련 도구
이 도구를 보완하는 관련 유틸리티를 살펴보세요.
공식 문서 및 참고 자료
이 유틸리티의 공식 사양 및 플랫폼 문서입니다.