AfterShip/clickhouse-sql-parser
ClickHouse 방언 SQL을 타입이 지정된 AST로 파싱하고 쿼리를 포맷하거나 보기 좋게 정리하는 Go 라이브러리 및 CLI입니다.
- 스타
- 255
- 포크
- 62
- 열린 이슈
- 1
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
clickhouse-sql-parser는 ClickHouse SQL 문을 Go에서 타입이 지정된 추상 구문 트리(AST)로 변환합니다. 라이브러리로 가져와 사용하거나 CLI로 실행할 수 있으며, AST를 출력하거나 한 줄로 압축된 형식으로 출력하고 들여쓰기와 줄바꿈을 적용해 쿼리를 보기 좋게 정리할 수 있습니다.
라이브러리는 ParseStmts를 사용하는 파서, AST 노드를 다시 SQL로 변환하는 포매터, Walk, WalkWithBreak, Find, FindAll, Transform 같은 순회 헬퍼를 제공합니다. 이를 활용하면 직접 문법을 작성하지 않고도 쿼리를 프로그래밍 방식으로 검사하거나 다시 쓸 수 있습니다.
이 프로젝트는 Go로 작성된 Spanner SQL 파서인 memefish에서 영감을 받았습니다. 출력 및 포맷 테스트 자료는 테스트 케이스로 생성되며, 새 구문을 추가할 때 clickhouse-local을 이용해 검증합니다.
핵심 기능
- 01ClickHouse SQL 문을 Go에서 타입이 지정된 AST로 파싱합니다.
- 02AST 노드를 SQL 문자열로 다시 포맷합니다.
- 03들여쓰기와 줄바꿈을 적용해 쿼리를 보기 좋게 정리합니다.
- 04트리를 순회하고 다시 쓰는 Walk, Find, FindAll, Transform 헬퍼를 제공합니다.
- 05Go 라이브러리와 CLI로 사용할 수 있으며, go install 또는 Homebrew로 설치할 수 있습니다.
활용 사례
- ClickHouse 쿼리의 린트 및 정적 분석
- 쿼리에서 참조하는 테이블을 검사해 접근 제어 적용
- 실행 전에 쿼리를 프로그래밍 방식으로 다시 작성
- 에디터나 파이프라인에서 ClickHouse SQL 포맷팅
빠른 시작
- 1
Go로 CLI 설치하기
go install github.com/AfterShip/clickhouse-sql-parser@latest - 2
macOS에서는 대신 Homebrew로 설치하기
brew install clickhouse-sql-parser - 3
쿼리 파싱 또는 포맷하기
clickhouse-sql-parser -beautify "SELECT * FROM clickhouse WHERE a=100"
사용 전 알아둘 점
- ClickHouse 방언의 구문만 파싱하므로 최신 SQL이나 특이한 SQL은 지원되지 않을 수 있습니다.
포함된 컬렉션
토픽
자주 묻는 질문
- clickhouse-sql-parser은(는) 무엇인가요?
- ClickHouse 방언 SQL을 타입이 지정된 AST로 파싱하고 쿼리를 포맷하거나 보기 좋게 정리하는 Go 라이브러리 및 CLI입니다. clickhouse-sql-parser는 ClickHouse SQL 문을 Go에서 타입이 지정된 추상 구문 트리(AST)로 변환합니다. 라이브러리로 가져와 사용하거나 CLI로 실행할 수 있으며, AST를 출력하거나 한 줄로 압축된 형식으로 출력하고 들여쓰기와 줄바꿈을 적용해 쿼리를 보기 좋게 정리할 수 있습니다.
- clickhouse-sql-parser은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- clickhouse-sql-parser은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- clickhouse-sql-parser은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. clickhouse-sql-parser의 마지막 커밋은 2026년 11월 4일입니다.
- clickhouse-sql-parser은(는) 어디에 사용할 수 있나요?
- ClickHouse 쿼리의 린트 및 정적 분석 쿼리에서 참조하는 테이블을 검사해 접근 제어 적용 실행 전에 쿼리를 프로그래밍 방식으로 다시 작성 에디터나 파이프라인에서 ClickHouse SQL 포맷팅
- clickhouse-sql-parser는 어떻게 설치하나요?
- Go로 CLI 설치하기: go install github.com/AfterShip/clickhouse-sql-parser@latest macOS에서는 대신 Homebrew로 설치하기: brew install clickhouse-sql-parser 쿼리 파싱 또는 포맷하기: clickhouse-sql-parser -beautify "SELECT * FROM clickhouse WHERE a=100"
- clickhouse-sql-parser은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/AfterShip/clickhouse-sql-parser
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
sqlglot에서 영감을 받은 Rust/WASM SQL 트랜스파일러로, 30개가 넘는 방언의 SQL을 파싱·생성·변환·포맷합니다.
PHP로 작성된 PHP 파서로, PHP 소스 코드를 정적 분석과 코드 조작에 활용할 수 있는 AST로 변환합니다.
일반 텍스트가 아닌 AST 패턴으로 코드를 검색하고 린트하며 재작성하는 CLI 도구입니다.
TypeScript Compiler API를 감싸 TypeScript와 JavaScript 코드를 분석하고 프로그램으로 변경할 수 있게 해 주는 TypeScript 래퍼입니다.
추상 구문 트리를 생성하는 Java 1~25 파서와 선언 및 타입을 확인하는 심볼 솔버입니다.