Java-парсер SQL, который преобразует SQL-операторы в дерево Java-объектов для обхода и позволяет выводить их обратно в виде SQL.
AfterShip/clickhouse-sql-parser
Библиотека и CLI на Go для разбора SQL-диалекта ClickHouse в типизированный AST, а также форматирования и улучшения читаемости запросов.
- Звёзды
- 255
- Форки
- 62
- Открытые issues
- 1
- Последний коммит
- 4 дня назад
Что это?
clickhouse-sql-parser преобразует SQL-операторы ClickHouse в типизированное абстрактное синтаксическое дерево (AST) на Go. Его можно подключить как библиотеку или запускать через CLI, который выводит AST, формирует компактную однострочную запись или улучшает читаемость запросов с помощью отступов и переносов строк.
Библиотека предоставляет парсер с методом ParseStmts, форматтер, который преобразует узлы AST обратно в SQL, а также вспомогательные функции обхода, например Walk, WalkWithBreak, Find, FindAll и Transform. С их помощью можно программно анализировать или переписывать запросы, не создавая грамматику самостоятельно.
Проект вдохновлён memefish — парсером Spanner SQL на Go. Тестовые данные для проверки вывода и форматирования генерируются тест-кейсами и сверяются с clickhouse-local при добавлении нового синтаксиса.
Ключевые возможности
- 01Разбирает SQL-операторы ClickHouse в типизированный AST на Go.
- 02Преобразует узлы AST обратно в SQL-строки.
- 03Улучшает читаемость запросов с помощью отступов и переносов строк.
- 04Предоставляет функции Walk, Find, FindAll и Transform для обхода и переписывания деревьев.
- 05Доступен как библиотека Go и CLI; установить его можно через go install или Homebrew.
Сценарии использования
- Линтинг и статический анализ запросов ClickHouse.
- Контроль доступа: анализ таблиц, на которые ссылается запрос.
- Программное переписывание запросов перед выполнением.
- Форматирование SQL ClickHouse в редакторах или пайплайнах.
Быстрый старт
- 1
Установите CLI с помощью Go
go install github.com/AfterShip/clickhouse-sql-parser@latest - 2
В macOS установите CLI с помощью Homebrew
brew install clickhouse-sql-parser - 3
Разберите или отформатируйте запрос
clickhouse-sql-parser -beautify "SELECT * FROM clickhouse WHERE a=100"
Что важно знать
- Разбор поддерживает только синтаксис диалекта ClickHouse, поэтому более новый или необычный SQL может не поддерживаться.
В подборках
Темы
Частые вопросы
- Что такое clickhouse-sql-parser?
- Библиотека и CLI на Go для разбора SQL-диалекта ClickHouse в типизированный AST, а также форматирования и улучшения читаемости запросов. clickhouse-sql-parser преобразует SQL-операторы ClickHouse в типизированное абстрактное синтаксическое дерево (AST) на Go. Его можно подключить как библиотеку или запускать через CLI, который выводит AST, формирует компактную однострочную запись или улучшает читаемость запросов с помощью отступов и переносов строк.
- clickhouse-sql-parser можно использовать бесплатно? Какая у него лицензия?
- clickhouse-sql-parser распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- clickhouse-sql-parser всё ещё поддерживается?
- Активно поддерживается. Последний коммит в clickhouse-sql-parser — 4 нояб. 2026 г..
- Для чего можно использовать clickhouse-sql-parser?
- Линтинг и статический анализ запросов ClickHouse. Контроль доступа: анализ таблиц, на которые ссылается запрос. Программное переписывание запросов перед выполнением. Форматирование SQL ClickHouse в редакторах или пайплайнах.
- Как установить clickhouse-sql-parser?
- Установите CLI с помощью Go: go install github.com/AfterShip/clickhouse-sql-parser@latest В macOS установите CLI с помощью 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 проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
SQL-транспайлер на Rust/WASM для парсинга, генерации, транспиляции и форматирования SQL более чем в 30 диалектах, вдохновлённый sqlglot.
Парсер PHP, написанный на PHP: преобразует исходный код в абстрактное синтаксическое дерево для статического анализа и обработки кода.
CLI-инструмент для поиска, линтинга и переписывания кода по шаблонам AST, а не по обычному тексту.
Обёртка для TypeScript Compiler API, которая упрощает анализ и программное изменение кода TypeScript и JavaScript.
Парсер Java от версии 1 до Java 25, который строит абстрактное синтаксическое дерево, и модуль для разрешения ссылок на объявления и типы.