Repolode
AfterShip

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. 1

    Установите CLI с помощью Go

    go install github.com/AfterShip/clickhouse-sql-parser@latest
  2. 2

    В macOS установите CLI с помощью Homebrew

    brew install clickhouse-sql-parser
  3. 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 обновляется ежедневно.

Похожие проекты