SQL 포맷터

0 글자

GeekFormat SQL 포맷터는 어지러운 SQL 쿼리 문을 빠르게 미화하고 정리합니다. MySQL, PostgreSQL, SQLite, SQL Server, Oracle 등 20가지 데이터베이스 방언을 지원하며 키워드 대소문자, 들여쓰기 스타일, 연산자 줄바꿈 위치, 표현식 너비 등 포맷 옵션을 사용자 정의할 수 있습니다. 4가지 원클릭 프리셋 스타일을 제공하며 SQL 압축과 구문 검증 기능이 내장되어 있고 파일 업로드/다운로드, URL 공유, 키보드 단축키를 지원합니다. CodeMirror 6 에디터를 기반으로 구문 강조와 조정 가능한 패널 레이아웃을 제공하며 입력 후 실시간으로 자동 포맷팅됩니다. 순수 브라우저 로컬 처리로 SQL 문이 서버에 업로드되지 않습니다.

관련 추천

SQL 포맷팅 정보

SQL 포맷팅(SQL Formatting / SQL Beautification)은 자동화 도구를 사용하여 SQL 문의 공백 문자(줄바꿈, 들여쓰기, 공백)와 키워드 대소문자를 조정하여 일관되고 가독성이 높은 레이아웃 구조를 부여하는 것입니다. 선언적 쿼리 언어인 SQL에서 복잡한 쿼리는 종종 여러 테이블 JOIN, 중첩 서브쿼리, 여러 WHERE 조건, GROUP BY 그룹화, HAVING 필터링, ORDER BY 정렬 등 여러 절을 포함합니다. 포맷팅하지 않으면 모든 내용이 한 줄에 뭉개지거나 들여쓰기가 어지러워 가독성과 유지보수 효율이 심각하게 저하됩니다. 포맷팅된 SQL은 적절한 줄바꿈과 들여쓰기로 각 절을 독립된 줄에 배치하고 들여쓰기로 중첩 계층을 표현하여 독자가 쿼리 구조를 빠르게 이해할 수 있게 합니다.

왜 SQL 포맷팅이 중요할까요? 팀 협업 환경에서는 개발자마다 코딩 스타일 선호도가 다릅니다——키워드를 대문자로 하는 사람도 있고 소문자로 하는 사람도 있습니다; 2칸 공백 들여쓰기를 사용하는 사람도 있고 4칸 공백이나 Tab을 사용하는 사람도 있습니다; AND를 행 앞에 두는 사람도 있고 행 끝에 두는 사람도 있습니다. 이러한 스타일 차이 자체는 SQL 실행에 영향을 주지 않지만 코드 리뷰(Code Review) 시 의미 없는 diff가 대량으로 발생하여 리뷰어는 어떤 것이 진짜 로직 변경이고 어떤 것이 단순한 포맷 조정인지 구분해야 합니다. 통일된 SQL 포맷팅 표준과 자동 포맷팅 도구는 스타일 논쟁을 제거하여 팀이 비즈니스 로직 자체에 집중할 수 있게 합니다.

SQL 포맷팅의 핵심 규칙에는 보통 다음 측면이 포함됩니다: 첫째, 키워드 대소문자——SELECT, FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, HAVING, LIMIT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP 등 SQL 예약어는 식별자와 구분하기 위해 보통 대문자로 합니다(또는 팀 표준에 따라 일괄 소문자로 합니다); 둘째, 절 줄바꿈——각 주요 절(SELECT/FROM/WHERE/GROUP BY/ORDER BY 등)을 독립된 줄에 배치합니다; 셋째, 열 이름 정렬——SELECT 목록의 여러 열 이름을 각각 한 줄에 배치하고 수직으로 정렬합니다; 넷째, 들여쓰기 계층——서브쿼리, JOIN 조건, 중첩 CASE 표현식 등은 들여쓰기를 늘려 계층을 표현합니다; 다섯째, 연산자 위치——AND/OR 등 논리 연산자를 행 앞 또는 행 끝에 통일하여 배치합니다.

다양한 데이터베이스 방언의 SQL 포맷팅에는 각각 특수성이 있습니다. MySQL은 백틱(`)으로 식별자를 인용하고 PostgreSQL은 큰따옴표(")를 사용하며 SQL Server는 대괄호([])를 사용합니다; MySQL은 LIMIT로 페이지네이션을 하고 PostgreSQL은 LIMIT/OFFSET을 지원하며 SQL Server는 TOP 또는 OFFSET/FETCH를 사용하고 Oracle은 ROWNUM을 사용합니다; PostgreSQL에는 :: 형 변환 연산자가 있고 MySQL에는 백틱 이스케이프가 있으며 SQL Server에는 대괄호 식별자가 있습니다. 이러한 방언 차이로 인해 포맷터는 특정 데이터베이스의 구문 요소를 인식해야 하며 그렇지 않으면 특수 구문을 오류로 오판하거나 키워드를 잘못 분할할 수 있습니다. 이 도구는 sql-formatter 라이브러리를 기반으로 구현되어 20가지 주류 SQL 방언에 대해 전문적인 구문 지원을 제공합니다.

SQL 압축(SQL Minification)은 포맷팅의 반대 작업이며 특정 시나리오에서 매우 유용합니다. 애플리케이션 로그에 출력되는 SQL, ORM 프레임워크(Hibernate, MyBatis, Django ORM, SQLAlchemy 등)가 생성하는 SQL, 데이터베이스 성능 모니터링 도구가 캡처하는 SQL은 종종 줄바꿈 없는 한 줄 압축 형식이어서 문제를 트러블슈팅하기에 매우 불친절합니다——읽으려면 먼저 포맷팅해야 합니다. 반대로 SQL을 코드 문자열(Java/Python/JavaScript에서 문자열 연결 등)에 임베드하거나 설정 파일에 쓰거나 URL 매개변수로 전달하거나 여러 줄 텍스트를 지원하지 않는 채팅 도구에서 공유해야 하는 경우 한 줄로 압축하면 줄바꿈과 들여쓰기로 인한 포맷 문제를 피할 수 있습니다.

적절한 포맷 스타일을 선택하려면 팀 표준과 사용 시나리오를 고려해야 합니다. 키워드 대문자 스타일은 SQL의 전통적인 관습으로 인쇄 시대에는 키워드를 대문자로 하여 손으로 쓰거나 타자기로 출력한 SQL을 더 읽기 쉽게 했으며 오늘날에도 여전히 많은 팀과 조직에서 사용하고 있습니다. 키워드 소문자 스타일은 GitHub 등 최신 코드 플랫폼에서 점점 인기가 높아지고 있습니다. 소문자는 시각적으로 더 부드러우며 최신 에디터의 구문 강조와 함께 사용하면 키워드를 구분하기 위해 대소문자에 의존할 필요가 없어집니다. 들여쓰기 너비 2칸 공백은 프론트엔드 개발자에게 더 흔하고 4칸 공백은 백엔드 Java/C# 개발자에게 더 흔합니다. Tab 들여쓰기는 개발자마다 에디터에서 표시 너비를 사용자 정의할 수 있게 합니다. 논리 연산자 AND/OR를 행 앞에 두면 긴 조건 목록을 읽을 때 각 조건을 스캔하기 쉽습니다; 행 끝에 두면 영어 읽기 습관에 더 적합합니다.

SQL 포맷팅 도구의 구현 원리는 주로 어휘 분석(Tokenization)과 구문 파싱에 기반합니다. sql-formatter 등의 라이브러리는 먼저 SQL 문자열을 일련의 토큰(키워드, 식별자, 리터럴, 연산자, 구두점, 주석 등)으로 분해한 다음 구문 규칙(방언마다 다른 규칙 세트가 있음)에 따라 이러한 토큰을 재배치하고 적절한 위치에 줄바꿈과 들여쓰기를 삽입합니다. 범용 코드 포맷터(Prettier 등)와 달리 SQL 포맷터는 SQL의 특정 구문 구조(JOIN...ON 조건, CASE WHEN...END 표현식, 서브쿼리 괄호 중첩 등)를 이해하여 올바르게 들여써야 하며 단순히 중괄호나 괄호 일치에만 기반하지 않습니다.

SQL 포맷팅 도구 사용 시 다음 사항에 주의해야 합니다: 첫째, 포맷팅은 SQL의 의미적 정확성을 검증하지 않습니다——구문은 올바르지만 논리적으로 잘못된 SQL(JOIN 조건 오류, WHERE 조건 누락 등)은 포맷팅 후에도 여전히 잘못된 상태이며 포맷팅은 레이아웃만 개선할 뿐 로직을 개선하지 않습니다; 둘째, 포맷팅 도구는 드물게 엣지 케이스에서 공백에 민감한 시나리오(문자열 상수 내 공백, 특정 주석 위치 등)에서 원래 SQL과 다른 결과를 생성할 수 있으므로 포맷팅 후 간단한 검증을 권장합니다; 셋째, 포맷팅 도구가 생성한 SQL, 특히 동적 매개변수를 포함하는 SQL을 테스트 없이 프로덕션 환경에서 직접 실행하지 마십시오; 넷째, 민감한 데이터(비밀번호, 키, PII)를 포함하는 SQL에는 온라인 도구 대신 (이 도구와 같은) 로컬 포맷팅 도구를 사용하여 데이터 유출 위험을 피하십시오.

사용 사례

  • 레거시 프로젝트를 인계받을 때 포맷되지 않은 큰 SQL 저장 프로시저와 복잡한 JOIN 쿼리를 정리하여 비즈니스 로직을 빠르게 이해
  • 팀 코드 리뷰 전에 SQL 스타일을 통일하여 개인 포맷 선호도로 인한 diff 노이즈를 제거하고 로직 리뷰에 집중
  • 로그나 콘솔에서 복사한 압축된 한 줄 SQL을 포맷팅하여 읽기 쉽게 만들고 문제 트러블슈팅
  • 기술 문서와 블로그 작성 시 SQL 예제를 포맷팅하여 문서에 임베드하면 전문성과 가독성 향상
  • 데이터베이스 클라이언트에서 내보낸 SQL 포맷이 어지러울 때 팀 통일 스타일로 다시 포맷팅한 후 코드 커밋
  • 면접이나 기술 공유 준비 시 SQL 데모 문을 포맷팅하여 PPT와 화이트보드 설명에 사용
  • SQL 오류 트러블슈팅 시 어지러운 중첩 서브쿼리를 포맷팅하여 괄호 불일치, 키워드 누락 등 구조적 문제 식별
  • ORM 프레임워크가 생성하는 SQL 로그는 보통 줄바꿈 없는 압축 형식이므로 포맷팅하여 실제 실행되는 쿼리를 분석하기 쉽게 함
  • 데이터 마이그레이션 스크립트 개발 시 CREATE TABLE 문과 INSERT 문을 포맷팅하여 유지보수성 향상
  • 다른 버전 간 SQL 차이를 비교하기 전에 포맷을 통일하여 순수한 포맷 차이가 코드 리뷰를 방해하는 것 방지
  • SQL 학습 시 예제 쿼리를 포맷팅하여 명확한 들여쓰기와 줄바꿈으로 JOIN, 서브쿼리, GROUP BY의 계층 관계 이해
  • 동료에게 SQL 스니펫을 공유할 때 먼저 포맷팅한 후 URL 링크로 공유. 상대방이 열면 즉시 동일한 포맷 결과가 표시됩니다

이용 방법

  1. 데이터베이스 방언을 선택하고(기본값 MySQL, 20가지 SQL 방언 지원) 포맷터가 구문을 올바르게 인식하는지 확인
  2. 포맷팅할 SQL 문을 왼쪽 편집 영역에 붙여넣거나 업로드 버튼을 클릭하여 .sql/.txt 파일을 가져오거나 샘플 메뉴에서 샘플 SQL을 로드
  3. 포맷 버튼(Shift+Cmd/Ctrl+F)을 클릭하거나 자동 포맷팅을 기다리면(입력 후 800ms 후 자동 트리거) 오른쪽에 포맷 결과가 즉시 표시됨
  4. 포맷을 조정해야 하는 경우 설정 버튼을 클릭하여 설정 패널을 펼치고 키워드 대소문자, 들여쓰기, 줄바꿈 등 옵션을 조정하거나 프리셋 스타일을 선택. 한 줄로 압축하려면 압축 버튼 클릭
  5. 복사 버튼을 클릭하여 결과를 복사하거나 다운로드 버튼을 클릭하여 .sql 파일로 저장하거나 공유 버튼을 클릭하여 SQL 내용이 포함된 URL 링크 생성

주요 기능

  • 20가지 데이터베이스 방언 호환: Standard SQL, MySQL, MariaDB, TiDB, PostgreSQL, SQLite, BigQuery, Snowflake, Redshift, DB2, PL/SQL(Oracle), T-SQL(SQL Server), Spark SQL, Hive, Trino, ClickHouse, DuckDB 등 20가지 SQL 방언의 구문 인식 및 포맷팅 지원
  • 키워드 대소문자 제어: SELECT/FROM/WHERE/JOIN 등 키워드를 대문자(UPPER), 소문자(lower) 또는 원래 대소문자 유지(preserve) 세 가지 모드 중 선택 가능. 데이터 유형과 함수 이름은 개별적으로 설정 가능
  • 식별자 대소문자 제어: 테이블 이름, 열 이름, 별칭 등 식별자는 대문자, 소문자 또는 원래 대소문자 유지를 지원하여 팀 코딩 표준에 적응
  • 들여쓰기 스타일 선택 가능: 표준 들여쓰기, 표 형식 왼쪽 정렬(tabularLeft), 표 형식 오른쪽 정렬(tabularRight) 세 가지 들여쓰기 스타일을 지원하여 다양한 가독성 선호도에 대응
  • 유연한 들여쓰기 설정: 들여쓰기 너비는 2칸 공백, 4칸 공백 또는 Tab 문자 중에서 선택 가능. 쿼리 문 사이의 빈 줄 수는 0/1/2줄 중에서 선택 가능
  • 논리 연산자 줄바꿈: AND/OR 등 논리 연산자의 줄바꿈 위치를 연산자 앞(before) 또는 뒤(after)로 구성할 수 있어 팀 코드 스타일과 일치
  • 표현식 너비 제어: 표현식 줄바꿈 너비 임계값 조정 가능(20~200자). 너비를 초과하면 자동으로 줄바꿈되어 한 줄 코드 길이를 제어
  • 밀집 연산자 모드: 활성화하면 연산자 주위에 여분의 공백을 넣지 않아 더 컴팩트한 포맷 결과를 생성. 임베디드 SQL 시나리오에 적합
  • 세미콜론 앞 줄바꿈: 문 끝 세미콜론 앞에 줄바꿈을 넣을지 여부를 선택 가능. 세미콜론을 독립된 줄에 배치하여 문 경계를 빠르게 식별 가능
  • 4가지 프리셋 스타일: 기본값(UPPER 키워드 + 2칸 공백 들여쓰기), 소문자(모든 키워드 소문자), 컴팩트(표 형식 정렬 + 밀집 연산자), 널찍함(4칸 공백 들여쓰기 + 두 줄 빈칸) 프리셋을 원클릭으로 전환 가능. 항목별로 조정할 필요 없음
  • SQL 압축 기능: 원클릭으로 SQL을 한 줄로 압축하고 주석, 여분의 공백, 줄바꿈을 자동으로 제거. 로그 출력, 코드 연결, 문서 임베딩 시나리오에 적합
  • 구문 검증 기능: 기본적인 SQL 구문 검증. 포맷팅 실패 시 오류 메시지를 표시하여 구문 문제 식별 지원
  • 샘플 SQL 내장: 기본 쿼리, 복잡한 JOIN 쿼리, 여러 문 일괄 처리, CREATE TABLE로 테이블 생성 문 네 가지 샘플 SQL 세트를 제공하여 즉시 포맷 효과 체험 가능
  • 파일 업로드/다운로드: .sql/.txt 파일을 업로드하여 SQL을 직접 가져올 수 있음. 포맷팅 후 .sql 파일로 다운로드하여 저장 가능
  • URL 공유: LZ-String 압축을 사용하여 SQL을 URL 해시에 인코딩. 링크를 복사하는 것만으로 포맷 설정과 SQL 내용 공유 가능
  • 실시간 자동 포맷팅: SQL 입력 후 800ms 디바운스로 자동 포맷팅. 수정하면 즉시 효과를 확인할 수 있어 버튼을 반복해서 클릭할 필요 없음
  • 키보드 단축키: Shift+Cmd/Ctrl+F로 포맷, Shift+Cmd/Ctrl+C로 압축, Shift+Cmd/Ctrl+V로 검증, Shift+Cmd/Ctrl+O로 업로드, Shift+Cmd/Ctrl+D로 다운로드, Shift+Cmd/Ctrl+K로 지우기
  • CodeMirror 에디터: CodeMirror 6 기반 SQL 구문 강조 에디터. 좌우 패널 너비 드래그 조정, 글꼴 크기 조정, 히스토리 패널 지원
  • 원클릭으로 결과 복사: 포맷팅 또는 압축 후 SQL을 원클릭으로 클립보드에 복사하여 데이터베이스 클라이언트나 코드에 직접 붙여넣어 사용 가능
  • 순수 브라우저 로컬 처리: 모든 SQL 포맷팅은 브라우저 JavaScript에서 sql-formatter 라이브러리를 기반으로 완료. SQL 문이 외부 서버에 업로드되지 않아 데이터 보안이 보장됩니다

자주 묻는 질문

SQL 포맷팅은 쿼리 로직을 변경합니까? 포맷팅 후 SQL을 직접 실행할 수 있습니까?

쿼리 로직은 변경되지 않습니다. SQL 포맷팅은 공백 문자(줄바꿈, 들여쓰기, 공백)와 키워드 대소문자만 조정하며 SQL의 식별자, 값, 연산자, 함수 호출, 쿼리 구조는 수정하지 않습니다. 포맷팅 후 SQL은 원래 SQL과 의미적으로 완전히 동등하며 MySQL Workbench, pgAdmin, DBeaver, Navicat 등 데이터베이스 클라이언트에 직접 복사하여 실행할 수 있습니다. 다만 프로덕션 환경에서 실행하기 전에 테스트 환경에서 검증하는 것을 권장합니다.

어떤 데이터베이스 방언을 지원합니까? 데이터베이스마다 SQL 구문이 다른 경우 어떻게 해야 합니까?

20가지 SQL 방언을 지원합니다: Standard SQL, MySQL, MariaDB, TiDB, PostgreSQL, SQLite, BigQuery, Snowflake, Redshift, DB2, DB2i, PL/SQL(Oracle), T-SQL(SQL Server), Spark SQL, Hive, Trino, ClickHouse, SingleStoreDB, DuckDB, N1QL(Couchbase). 데이터베이스마다 페이지네이션 구문(LIMIT vs LIMIT/OFFSET vs TOP vs ROWNUM), 문자열 연결, 날짜 함수, 식별자 인용(백틱 vs 큰따옴표 vs 대괄호) 등에 차이가 있습니다. 올바른 방언을 선택하면 포맷터가 키워드와 함수 이름을 올바르게 인식하고 방언 고유 함수가 잘못 포맷되는 것을 방지할 수 있습니다.

SQL 압축이 무엇입니까? 포맷팅과의 차이점은 무엇입니까?

SQL 압축(Minify)은 포맷팅의 반대 작업입니다: 모든 주석(/* */ 여러 줄 주석과 -- 한 줄 주석 포함)을 제거하고 연속된 공백 문자를 단일 공백으로 병합하며 괄호/쉼표/세미콜론/연산자 주위의 여분 공백을 제거하여 한 줄의 컴팩트한 SQL을 출력합니다. 압축은 다음 시나리오에 적합합니다: SQL을 코드 문자열에 임베드, 로그 파일에 쓰기, URL 매개변수로 전달, 줄바꿈 혼란을 피하기 위해 채팅 창에서 공유. 포맷팅은 적절한 줄바꿈과 들여쓰기를 추가하여 가독성을 높입니다.

자동 포맷팅은 언제 트리거됩니까? 끌 수 있습니까?

왼쪽 편집 영역에서 SQL을 입력하거나 수정하면 800ms 디바운스 지연 후 자동으로 포맷팅이 트리거됩니다(이전 포맷팅에 구문 오류가 없었던 경우). 이는 입력을 멈춘 후 즉시 포맷 결과를 표시하기 위함입니다. 수동 제어를 선호하는 경우 도구 모음의 포맷 버튼을 클릭하면 되며 자동 트리거를 기다릴 필요가 없습니다. 현재 자동 포맷팅을 개별적으로 끄는 스위치는 없지만 입력 내용을 수정하지 않는 한 반복해서 트리거되지 않습니다.

포맷팅에 실패하여 구문 오류가 표시되면 어떻게 해야 합니까?

포맷터는 파싱할 수 없는 SQL 구문을 만나면 오류를 보고합니다. 일반적인 원인은 다음과 같습니다: 1) 괄호 불일치——왼쪽과 오른쪽 괄호 수가 일치하는지 확인하십시오; 2) 문자열이 닫히지 않음——작은따옴표/큰따옴표가 쌍으로 있는지 확인하십시오. 문자열 내 따옴표는 이스케이프해야 합니다(''나 \' 등); 3) 데이터베이스 방언 선택 오류——PostgreSQL 고유 :: 형 변환 구문을 사용하면서 MySQL 방언을 선택한 경우 등; 4) 불완전한 SQL 조각——SELECT FROM 없이 WHERE 조건만 있는 경우 등. 오류 메시지에는 파서가 보고한 문제 위치와 원인이 표시되므로 이를 기반으로 문제를 식별할 수 있습니다. 검증 버튼(Shift+Cmd/Ctrl+V)을 클릭하여 먼저 구문을 확인할 수도 있습니다.

키워드 대문자, 소문자, 원래 대소문자 유지 세 가지 모드는 어떻게 선택해야 합니까?

키워드 대문자(UPPER)는 가장 전통적이고 널리 사용되는 SQL 코딩 스타일로, SELECT/FROM/WHERE/JOIN 등 키워드를 대문자로 하여 테이블 이름/열 이름과 시각적으로 구분시키고 많은 코드에서 SQL 구조를 빠르게 찾을 수 있게 합니다. 키워드 소문자는 최신 IDE 환경(최신 에디터에는 구문 강조 기능이 있어 대소문자 구분에 의존하지 않음)에 더 적합하며 시각적으로 더 통일감이 있습니다. 원래 대소문자 유지(preserve)는 입력한 대소문자를 변경하지 않으며 기존 코드에 최소한의 포맷 조정을 할 때 적합합니다. 키워드, 식별자(테이블/열 이름), 데이터 유형(VARCHAR/INT/BIGINT), 함수 이름(COUNT/SUM/COALESCE)의 대소문자 전략은 각각 독립적으로 설정할 수 있습니다.

Tabular 정렬 모드와 표준 들여쓰기의 차이점은 무엇입니까?

표준 들여쓰기(standard)는 전통적인 계층 들여쓰기 방식을 사용하여 각 절에 고정된 공백 수로 들여씁니다. Tabular 왼쪽 정렬/오른쪽 정렬 모드는 SELECT 목록의 열 이름, WHERE 조건의 표현식 등을 열별로 정렬하여 표와 같은 시각적 효과를 만듭니다. 예를 들어 SELECT 뒤의 여러 열 이름은 수직으로 정렬되고 AS 별칭도 동일한 열 위치에 정렬됩니다. 이 모드는 와이드스크린 모니터에서 여러 열 쿼리를 읽을 때 매우 직관적이지만 좁은 화면에서는 줄이 너무 길어질 수 있습니다.

팀에서 통일된 SQL 스타일과 개인 선호도 사이를 빠르게 전환하려면 어떻게 해야 합니까?

설정 패널의 프리셋 버튼을 사용하십시오: 기본값(UPPER 키워드 + 2칸 공백 표준 들여쓰기), 소문자(모든 키워드 소문자), 컴팩트(tabularLeft 정렬 + 밀집 연산자), 널찍함(4칸 공백 들여쓰기 + 쿼리 간 두 줄 빈칸). 팀에 특정 표준이 있는 경우 각 옵션을 수동으로 조정하여 포맷하십시오. 현재 커스텀 프리셋 저장은 지원되지 않지만 설정 옵션 수가 제한되어 있어 빠르게 조정하기 편리합니다.

포맷팅 후 SQL에서 주석이 손실됩니까?

포맷(Format) 작업은 주석을 유지합니다. -- 한 줄 주석과 /* */ 여러 줄 주석 모두 원래 위치 부근에 유지됩니다(구체적인 위치는 sql-formatter 라이브러리의 주석 처리 로직에 따라 다릅니다). 다만 압축(Compress) 작업은 가장 컴팩트한 한 줄 SQL을 생성하기 위해 모든 주석을 제거합니다. 압축 전에 주석을 유지해야 하는 경우 먼저 포맷 결과를 복사하십시오.

어떤 키보드 단축키를 지원합니까? Mac과 Windows/Linux의 차이점은 무엇입니까?

다음 키보드 단축키를 지원합니다(Mac에서는 Cmd 키, Windows/Linux에서는 Ctrl 키를 사용하며 모두 Shift를 동시에 눌러야 합니다): Shift+Cmd/Ctrl+F 포맷; Shift+Cmd/Ctrl+C 압축; Shift+Cmd/Ctrl+V 구문 검증; Shift+Cmd/Ctrl+O 파일 업로드; Shift+Cmd/Ctrl+D 파일 다운로드; Shift+Cmd/Ctrl+K 내용 지우기. 도구 모음의 물음표 아이콘을 클릭하면 언제든지 단축키 목록을 볼 수 있습니다.

SQL 파일 업로드에 크기 제한이 있습니까? 어떤 파일 형식을 지원합니까?

.sql 및 .txt 형식의 텍스트 파일 업로드를 지원합니다. 파일 크기에 이론상 하드 제한은 없지만 매우 큰 파일(1MB를 초과하는 SQL 덤프 파일 등)을 브라우저에서 처리하면 성능 문제가 발생할 수 있습니다. 단일 쿼리 또는 소규모 스크립트 파일 처리를 권장합니다. 매우 큰 SQL 파일(전체 데이터베이스 덤프 등)의 경우 작은 세그먼트로 분할한 후 포맷팅하는 것을 권장합니다. 파일 내용은 브라우저 FileReader API를 통해 읽히며 서버에 업로드되지 않습니다.

URL 공유 기능은 안전합니까? 서버가 SQL 내용을 볼 수 있습니까?

URL 공유 기능은 LZ-String 압축을 사용하여 SQL 내용을 URL의 해시 부분(# 뒤 내용)에 인코딩합니다. URL 해시 부분의 특징은 HTTP 요청과 함께 서버로 전송되지 않으며 브라우저 로컬에서만 처리된다는 것입니다. 공유 링크를 다른 사람에게 복사하면 상대방의 브라우저가 해시를 파싱하고 SQL 내용을 압축 해제하여 표시합니다. 이 과정 전체에서 SQL이 서버를 경유하지 않습니다. 다만 공유 링크에는 완전한 SQL 내용이 포함되어 있으므로 SQL에 민감한 정보(비밀번호, 키, 개인 데이터 등)가 포함된 경우 공개 채널에서 링크를 공유하지 마십시오.

여러 SQL 문을 포함하는 스크립트를 포맷팅할 수 있습니까?

예. 여러 SQL 문 일괄 포맷팅을 지원합니다(세미콜론으로 구분된 여러 SELECT/INSERT/UPDATE/CREATE TABLE 문 등). 설정 패널의 "쿼리 간 빈 줄 수" 옵션으로 문 사이 간격(0/1/2줄)을 제어할 수 있습니다. "여러 문" 샘플 SQL을 로드하면 여러 문 포맷 효과를 체험할 수 있습니다. 각 문은 독립적으로 들여쓰기되어 정렬되며 설정된 빈 줄 수로 문이 구분됩니다.

어느 정도 크기의 SQL 문을 처리하면 버벅입니까?

sql-formatter 라이브러리 기반 순수 JavaScript 구현으로 수백 줄 이내의 SQL 처리는 최신 브라우저에서 보통 밀리초 단위로 응답하여 버벅임을 느끼지 않습니다. 수천 줄의 저장 프로시저나 복잡한 쿼리도 1초 이내에 완료됩니다. 모든 계산은 브라우저 메인 스레드에서 완료되므로 매우 큰 파일(10000줄을 초과하는 SQL 덤프 등)은 인터페이스가 일시적으로 정지할 수 있어 일괄 처리를 권장합니다.

이 도구는 인터넷 연결이 필요합니까? SQL 데이터는 안전합니까?

페이지가 로드된 후 오프라인으로 사용할 수 있습니다. SQL 포맷팅, 압축, 검증은 모두 브라우저 로컬 JavaScript에서 완료되며 입력한 SQL 문이 외부 서버로 전송되지 않습니다. Cookie 추적을 사용하지 않으며 사용자가 입력한 SQL 내용을 수집하지 않습니다. 성숙한 오픈소스 sql-formatter 라이브러리를 기반으로 구현되어 코드 로직이 투명하고 감사 가능합니다.

문제 해결

포맷팅 오류 "Parse error" 또는 "SQL 포맷팅에 실패했습니다"가 표시되면 어떻게 해야 합니까?

포맷터는 sql-formatter 라이브러리를 기반으로 SQL 파싱을 수행하며 인식할 수 없는 구문을 만나면 오류를 보고합니다. 일반적인 원인과 해결 방법: 1) 괄호 불일치——왼쪽과 오른쪽 괄호 수가 일치하는지 확인하십시오. 에디터의 괄호 일치 강조 표시 기능을 사용하여 확인을 보조할 수 있습니다; 2) 문자열 따옴표가 닫히지 않음——작은따옴표, 큰따옴표가 쌍으로 있는지 확인하십시오. 문자열 내 따옴표는 이스케이프해야 합니다(''나 \' 등); 3) 데이터베이스 방언 선택 오류——PostgreSQL의 :: 연산자를 사용하면서 MySQL 방언을 선택한 경우 등 올바른 방언으로 전환하십시오; 4) SQL 문이 불완전——WHERE 절만 있고 SELECT FROM이 없는 경우 등; 5) 매우 특수한 데이터베이스 고유 구문을 사용 중(특정 저장 프로시저 제어 흐름 등)——가장 가까운 방언으로 전환해 보거나 포맷팅 전에 SQL 조각을 단순화해 보십시오.

포맷팅 후 중국어나 특수 문자가 깨져서 표시됩니까?

이 도구는 UTF-8 인코딩을 완전히 지원하며 중국어와 유니코드 문자는 포맷팅 과정에서 변경되지 않습니다. 깨진 문자가 표시되는 경우 보통 붙여넣은 SQL 자체가 인코딩이 올바르지 않은 파일(GBK 인코딩 파일에서 복사한 경우 등)에서 유래합니다. 소스 파일이 UTF-8 인코딩으로 저장되어 있는지 확인하거나 붙여넣기 전에 파일을 UTF-8 인코딩으로 변환하십시오. 브라우저 측 CodeMirror 에디터는 기본적으로 UTF-8을 사용하며 인코딩 변환을 도입하지 않습니다.

SQL 파일 업로드 후 반응이 없거나 비어 있다고 표시됩니까?

파일 업로드는 .sql 및 .txt 확장자의 텍스트 파일만 지원합니다. 파일이 바이너리 형식(.sqlite 데이터베이스 파일, .doc 문서 등)인 경우 업로드 후 깨진 문자로 표시되거나 비어 있게 표시됩니다. 또한 일부 브라우저에는 JavaScript로 로컬 파일을 읽는 것에 대한 보안 제한이 있습니다——사용자가 업로드 버튼을 클릭하여 파일을 선택하는 것이 아니라 드래그 앤 드롭으로 파일을 선택하지 않았는지 확인하십시오(드래그 앤 드롭 업로드는 현재 지원되지 않음). 파일 크기는 1MB를 초과하지 않는 것을 권장합니다. 초과하면 브라우저 파싱이 느려질 수 있습니다.

포맷팅 후 일부 키워드가 소문자/대문자가 되어 원래 입력과 일치하지 않습니까?

이것은 포맷팅의 정상적인 동작입니다. 키워드 대소문자(keywordCase) 옵션은 기본적으로 UPPER로 설정되어 있어 SQL 키워드를 일괄적으로 대문자로 변환합니다. 원래 대소문자를 유지하고 싶은 경우 설정 패널에서 키워드, 식별자, 데이터 유형, 함수의 대소문자 옵션을 모두 "원래 대소문자 유지(preserve)"로 설정하십시오. 이렇게 하면 포맷터가 줄바꿈과 들여쓰기만 조정하고 문자의 대소문자를 변경하지 않습니다.

용어집

SQL Dialect(SQL 방언)
다른 데이터베이스 관리 시스템(DBMS)에 의한 Standard SQL의 확장과 변형입니다. 예를 들어 MySQL의 LIMIT, PostgreSQL의 :: 형 변환, SQL Server의 TOP, Oracle의 ROWNUM은 모두 방언 고유 구문입니다. 포맷팅 시 올바른 방언을 선택하면 구문이 올바르게 파싱되도록 합니다.
Keyword Case(키워드 대소문자)
SQL 예약어(SELECT/FROM/WHERE/JOIN 등)의 대소문자 전략입니다. 대문자(UPPER)는 전통적인 스타일이며 소문자(lower)는 최신 개발에서 점점 인기가 높아지고 있고 원래 대소문자 유지(preserve)는 최소한의 변경에 사용됩니다.
Identifier(식별자)
SQL의 데이터베이스 객체 이름입니다. 데이터베이스 이름, 테이블 이름, 열 이름, 별칭, 인덱스 이름, 뷰 이름, 저장 프로시저 이름 등이 포함됩니다. 데이터베이스마다 식별자를 인용하는 방식이 다릅니다: MySQL은 백틱, PostgreSQL은 큰따옴표, SQL Server는 대괄호를 사용합니다.
Indent Style(들여쓰기 스타일)
SQL 포맷팅 시 들여쓰기 정렬 방식을 제어합니다. 표준 들여쓰기는 계층적 진행을 사용합니다; tabularLeft/tabularRight는 열 이름과 별칭을 표 형식으로 정렬하여 와이드스크린에서 가독성은 좋아지지만 줄이 길어질 수 있습니다.
Logical Operator Newline(논리 연산자 줄바꿈)
여러 줄 조건에서 AND/OR 등 논리 연산자의 줄바꿈 위치입니다. before는 연산자가 다음 줄의 시작에 있음을 의미하고 after는 연산자가 현재 줄의 끝에 있음을 의미합니다. 팀마다 선호도가 다릅니다.
Expression Width(표현식 너비)
줄바꿈을 트리거하는 한 줄 문자 수 임계값(20~200자)입니다. 이 너비를 초과하는 표현식은 줄바꿈되며 코드 에디터의 printWidth/ruler 설정과 유사합니다.
Dense Operators(밀집 연산자)
포맷 옵션 중 하나로 활성화하면 연산자(=, <, >, +, - 등) 주위에 여분의 공백을 넣지 않아 `WHERE id=1 AND status='active'`처럼 되며 `WHERE id = 1 AND status = 'active'` 대신 더 컴팩트한 출력을 생성합니다.
Lines Between Queries(쿼리 간 빈 줄 수)
여러 SQL 문 사이의 빈 줄 수입니다. 0은 연속 배치, 1은 한 줄 빈칸으로 구분(일반적), 2는 두 줄 빈칸(널찍한 스타일)을 의미하며 여러 문 스크립트의 가독성에 영향을 줍니다.
SQL Minify/Compress(SQL 압축)
포맷된 SQL에서 모든 주석과 여분 공백을 제거하고 한 줄의 컴팩트 형식으로 병합합니다. 로그 출력, 코드 임베드, URL 전달 등의 시나리오에 적합하며 포맷팅의 반대 작업입니다.
Pretty Print(예쁘게 인쇄)
자동 들여쓰기와 줄바꿈으로 코드나 데이터를 가독성 높은 형식으로 출력하는 것입니다. SQL Pretty Print는 SQL 포맷팅 미화이며 Minify(압축)의 반대입니다.
CodeMirror
이 도구에서 사용하는 브라우저 측 코드 에디터 컴포넌트(버전 6)입니다. SQL 구문 강조, 줄 번호 표시, 코드 접기 등 편집 향상 기능을 제공하며 업계에서 널리 사용되는 웹 코드 에디터 솔루션입니다.
sql-formatter
이 도구의 기반에서 사용하는 오픈소스 SQL 포맷팅 라이브러리입니다. 여러 SQL 방언의 어휘 분석과 포맷된 출력을 지원하며 프론트엔드 생태계에서 가장 인기 있는 SQL 포맷팅 라이브러리 중 하나입니다.

지원하는 SQL 방언 목록

이 도구는 20가지 SQL 데이터베이스 방언을 지원합니다. 사용 중인 데이터베이스와 일치하는 방언을 선택하면 최적의 포맷 결과를 얻을 수 있습니다:

방언데이터베이스특징 설명
Standard SQL표준 SQLANSI SQL 표준 구문. 범용 시나리오와 알 수 없는 방언에 적합
MySQLMySQL / TiDB가장 인기 있는 오픈소스 관계형 데이터베이스. 백틱 식별자, LIMIT 페이지네이션
MariaDBMariaDBMySQL 포크. MySQL 구문과 호환되며 더 많은 함수 확장
PostgreSQLPostgreSQL기능이 풍부한 오픈소스 데이터베이스. 큰따옴표 식별자, :: 형 변환
SQLiteSQLite임베디드 경량 데이터베이스. 모바일 애플리케이션과 브라우저에서 흔히 사용
T-SQLSQL Server / Azure마이크로소프트 SQL Server의 Transact-SQL. 대괄호 식별자, TOP 페이지네이션
PL/SQLOracleOracle의 절차형 SQL 확장. ROWNUM 페이지네이션, 풍부한 내장 패키지
BigQueryGoogle BigQueryGoogle 클라우드 데이터 웨어하우스. STRUCT/ARRAY 등 중첩 유형 지원
SnowflakeSnowflake클라우드 네이티브 데이터 웨어하우스. 반구조화 데이터 처리 능력이 강력함
RedshiftAWS Redshift아마존 웹 서비스 데이터 웨어하우스. PostgreSQL 기반이지만 고유 구문 있음

포맷 프리셋 스타일 비교

4가지 원클릭 프리셋 스타일은 다양한 사용 시나리오에 적합합니다:

프리셋키워드들여쓰기연산자쿼리 간격
기본UPPER2칸 공백 표준일반 간격1빈 줄
소문자lower2칸 공백 표준일반 간격1빈 줄
컴팩트UPPERTabular 왼쪽 정렬밀집 모드1빈 줄
널찍함UPPER4칸 공백 표준일반 간격2빈 줄

키보드 단축키 일람

모든 단축키는 수정 키+Shift+해당 문자 키를 동시에 눌러야 합니다:

작업MacWindows/Linux설명
포맷⇧⌘FShift+Ctrl+FSQL 문을 미화하고 줄바꿈과 들여쓰기 추가
압축⇧⌘CShift+Ctrl+CSQL을 한 줄로 압축하고 주석과 공백 제거
검증⇧⌘VShift+Ctrl+VSQL 구문이 올바른지 확인
업로드⇧⌘OShift+Ctrl+O로컬 파일에서 .sql/.txt 로드
다운로드⇧⌘DShift+Ctrl+D결과를 .sql 파일로 저장
지우기⇧⌘KShift+Ctrl+K입력과 출력 내용 지우기

Privacy & Security

이 SQL 포맷터의 모든 작업은 완전히 귀하의 브라우저 로컬에서 완료됩니다: 귀하가 입력한 SQL 문, 선택한 방언, 포맷 설정은 모두 브라우저 JavaScript에서 sql-formatter 라이브러리를 통해 처리되며 네트워크를 통해 SQL 내용이나 설정이 외부 서버로 전송되지 않습니다. 파일 업로드는 HTML5 FileReader API를 통해 로컬 파일 내용을 읽으며 네트워크 전송은 이루어지지 않습니다. URL 공유 기능은 압축된 SQL을 URL 해시 부분에 인코딩하며(# 뒤 내용은 HTTP 요청과 함께 서버로 전송되지 않음) 브라우저 로컬에서만 압축 해제하여 표시합니다. Cookie 추적을 사용하지 않으며 사용자가 입력한 SQL 내용이나 사용 행동 데이터를 수집하지 않습니다. 페이지를 닫거나 새로 고치면 입력 내용과 설정 상태는 자동으로 재설정됩니다(기록 기록은 로컬 localStorage에만 저장됨).

Authoritative References