AfterShip/clickhouse-sql-parser
ClickHouse方言のSQLを型付きASTに解析し、クエリの整形やフォーマットを行うGoライブラリ兼CLIです。
- スター
- 255
- フォーク
- 62
- 未解決の Issue
- 1
- 最終コミット
- 3 日前
これは何?
clickhouse-sql-parserは、ClickHouse SQL文をGoの型付き抽象構文木(AST)に変換します。ライブラリとしてインポートすることも、ASTの出力、1行にまとめた形式での出力、インデントや改行を使ったクエリの整形を行うCLIとして実行することもできます。
ライブラリはParseStmtsを備えたパーサー、ASTノードをSQLに戻すフォーマッターのほか、Walk、WalkWithBreak、Find、FindAll、Transformなどの走査用ヘルパーを公開しています。これらを使えば、自分で文法を書くことなく、プログラムからクエリを調査したり書き換えたりできます。
このプロジェクトは、Go製のSpanner SQLパーサーであるmemefishに着想を得ています。出力とフォーマットのテスト用アセットはテストケースから生成され、新しい構文を追加する際にはclickhouse-localを使って検証されます。
主な機能
- 01ClickHouse SQL文をGoの型付きASTに解析します。
- 02ASTノードをSQL文字列にフォーマットします。
- 03インデントや改行を使ってクエリを整形します。
- 04Walk、Find、FindAll、Transformのヘルパーで、ツリーの走査や書き換えができます。
- 05GoライブラリとCLIとして利用でき、go installまたはHomebrewでインストールできます。
ユースケース
- ClickHouseクエリのLintや静的解析。
- クエリ内で参照されているテーブルを調べてアクセス制御を適用。
- 実行前にクエリをプログラムから書き換え。
- エディターやパイプラインで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)に変換します。ライブラリとしてインポートすることも、ASTの出力、1行にまとめた形式での出力、インデントや改行を使ったクエリの整形を行うCLIとして実行することもできます。
- clickhouse-sql-parser は無料で使えますか?ライセンスは?
- clickhouse-sql-parser は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- clickhouse-sql-parser は今もメンテナンスされていますか?
- 活発にメンテナンス中。clickhouse-sql-parser の最終コミットは 2026年11月4日 です。
- clickhouse-sql-parser は何に使えますか?
- ClickHouseクエリのLintや静的解析。 クエリ内で参照されているテーブルを調べてアクセス制御を適用。 実行前にクエリをプログラムから書き換え。 エディターやパイプラインで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パターンにマッチさせて、コードの検索、Lint、書き換えを行うCLIツールです。
TypeScript Compiler APIをラップし、TypeScriptやJavaScriptのコードを解析・プログラムから変更できるライブラリ。
Java 1〜25のソースをASTに変換するパーサーと、宣言や型を解決するシンボルソルバー。