インストール
ClickHouse をダウンロードするには、次を実行します。実行
ClickHouse をダウンロードしただけでインストールしていない場合は、
clickhouse-client ではなく ./clickhouse client を使用してください。
コマンドラインオプションの完全な一覧については、コマンドラインオプション を参照してください。
ClickHouse Cloud への接続
ClickHouse Cloud サービスの接続情報は、ClickHouse Cloud コンソールで確認できます。接続先のサービスを選択し、Connect をクリックします。Native を選択すると、接続情報と
clickhouse-client コマンドの例が表示されます。
設定ファイルに接続情報を保存する
1 つ以上の ClickHouse サーバーの接続情報を、設定ファイルに保存できます。 形式は次のとおりです。クエリの構文に集中できるよう、以降の例では接続情報 (
--host、--port など) を省略しています。コマンドを使用する際は、忘れずに追加してください。対話型モード
対話型モードを使用する
ClickHouse を対話型モードで実行するには、以下を実行します。PrettyCompact です。
フォーマットは、クエリの FORMAT 句で変更するか、--format コマンドラインオプションを指定して変更できます。
Vertical フォーマットを使用するには、--vertical を使うか、クエリの末尾に \G を指定します。
このフォーマットでは各値が別々の行に出力されるため、列数の多いテーブルに便利です。
対話型モードでは、デフォルトでは Enter を押すと入力した内容がそのまま実行されます。
クエリの末尾にセミコロンは必要ありません。
クライアントは -m, --multiline パラメータを付けて起動できます。
複数行のクエリを入力するには、改行の前にバックスラッシュ \ を入力します。
Enter を押すと、クエリの次の行を入力するよう求められます。
クエリを実行するには、末尾にセミコロンを付けて Enter を押します。
ClickHouse Client は replxx (readline に類似) をベースにしているため、使い慣れたキーボードショートカットを利用でき、履歴も保持されます。
履歴はデフォルトで ~/.clickhouse-client-history に書き込まれます。
クライアントを終了するには、Ctrl+D を押すか、クエリの代わりに次のいずれかを入力します。
exitまたはexit;quitまたはquit;q、Qまたは:qlogoutまたはlogout;
ヘルプの表示
クライアントを離れずに、任意の関数、テーブルエンジン、データ型、フォーマット、設定、その他のシステム要素のドキュメントを参照できます。help に続けて名前を入力してください (/help、man、/man も同様に使用できます) :
system.documentation テーブルを照会します。一致したドキュメントは、太字/斜体のテキスト、表、構文ハイライト付きのコードブロックを含む Markdown から、ターミナル上にレンダリングされます。1 つの名前が複数のコンポーネントで共有されている場合 (たとえば file は関数であると同時にテーブルエンジンでもあります) 、それらがすべて表示されます。
完全一致するものがない場合、クライアントは類似した名前 (タイプミスを許容) と、その語に言及しているコンポーネントのドキュメントを一覧表示します。
help を単独で入力すると、簡単な使い方の概要が表示されます。
コマンド
Client は、サーバー に送信する代わりに、/ で始まるいくつかのコマンドを自ら実行します。
入力の先頭で
/ を入力すると、コマンドがヒントとして一覧表示され、名前をさらに入力すると一覧が絞り込まれます。Tab を押すと入力中のコマンドが補完されます。これは、ヒントが無効な場合にもコマンドを補完する方法です。/ を単独で送信してもコマンドではありません。Oracle SQL*Plus と同様に、最後の入力が繰り返されます。スペルミスのあるコマンド名はクエリとして実行されず、その旨と意図した可能性のあるコマンドが表示されます。
クエリ処理情報
クエリの処理中、クライアントには次の情報が表示されます。- Progress。デフォルトでは、1 秒あたり最大 10 回更新されます。 短時間で完了するクエリでは、進行状況が表示される前に処理が終わることがあります。
- デバッグ用に、パース後に整形されたクエリ。
- 指定したフォーマットでの結果。
- 結果の行数、経過時間、およびクエリ処理の平均速度。 すべてのデータ量は非圧縮データを基準としています。
Ctrl+C を押してキャンセルできます。
ただし、server がリクエストを中止するまで、少し待つ必要があります。
特定の段階では、クエリをキャンセルできません。
待たずにもう一度 Ctrl+C を押すと、クライアントは終了します。
ClickHouse Client では、クエリ実行用に外部データ (外部一時テーブル) を渡すことができます。
詳しくは、クエリ処理用の外部データ のセクションを参照してください。
別名
REPL 内では、以下の別名を使用できます:\l-SHOW DATABASES\d-SHOW TABLES\d <TABLE>-DESCRIBE TABLE <TABLE>\c <DATABASE>-USE <DATABASE>.- 直前のクエリを繰り返す
\d の引数がテーブル名の指定ではなく、\d FROM system や \d LIKE 'hits%' のように SHOW TABLES クエリの続きとなっている場合は、一覧表示のままになります。これらの句と同じ名前のテーブルを指定するには、引用符で囲む必要があります: \d `format`。
キーボードショートカット
Alt (Option) + Shift + e- 現在のクエリを使ってエディタを開きます。使用するエディタは環境変数EDITORで指定できます。デフォルトではvimが使用されます。Alt (Option) + #- 行をコメントアウトします。Ctrl + r- 履歴をあいまい検索します。
バッチモード
バッチモードを使う
ClickHouse Client を対話モードで使う代わりに、バッチモードで実行できます。 バッチモードでは、ClickHouse は 1 つのクエリを実行するとすぐに終了し、対話型の入力待ちやループはありません。 次のように 1 つのクエリを指定できます。--query コマンドラインオプションを使用することもできます:
stdin にクエリを渡せます:
messages テーブルが存在する場合は、コマンドラインからデータを挿入することもできます。
--query を指定すると、入力内容はすべて、改行の後にリクエストへ追加されます。
リモートのClickHouseサービスにCSVファイルを挿入する
この例では、サンプルデータセットのCSVファイルcell_towers.csv を、default データベース内の既存の cell_towers テーブルに挿入します。
コマンドラインからデータを挿入する例
コマンドラインからデータを挿入する方法はいくつかあります。 以下の例では、バッチモードを使用して 2 行の CSV データを ClickHouse のテーブルに挿入します。cat <<_EOF でヒアドキュメントが開始され、再度 _EOF が現れるまでの内容をすべて読み込み、その後出力します。
cat を使って file.csv の内容を標準出力 (stdout) に出力し、その出力を入力として clickhouse-client にパイプします:
TabSeparatedです。
上記の例に示したように、クエリのFORMAT句でフォーマットを設定できます。
パラメータ付きクエリ
クエリ内でパラメータを指定し、コマンドラインオプションでその値を渡すことができます。 これにより、クライアント側で特定の動的な値を使ってクエリをフォーマットする必要がなくなります。 たとえば:クエリ構文
クエリでは、コマンドラインパラメーターを使って補完する値を、次の形式で波括弧内に記述します。例
AI 搭載の SQL 生成
ClickHouse Client には、自然言語の説明から SQL クエリを生成する AI 支援機能が標準で組み込まれています。この機能により、SQL の深い知識がなくても複雑なクエリを作成できます。OPENAI_API_KEY または ANTHROPIC_API_KEY のいずれかの環境変数が設定されていれば、AI 支援はそのまま利用できます。さらに高度な設定については、設定 セクションを参照してください。
使用方法
AI 搭載の SQL 生成を使用するには、自然言語によるクエリの先頭に?? を付けます。
- データベースのスキーマを自動的に解析します
- 検出されたテーブルとカラムに基づいて適切な SQL を生成します
- 生成されたクエリをすぐに実行します
例
設定
AI 搭載の SQL 生成を使用するには、ClickHouse Clientの設定ファイルでAIプロバイダーを設定する必要があります。使用できるのは、OpenAI、Anthropic、またはOpenAI互換のAPIサービスです。環境変数ベースのフォールバック
設定ファイルに AI の設定が指定されていない場合、ClickHouse Client は自動的に環境変数を参照します:- まず
OPENAI_API_KEY環境変数を確認します - 見つからない場合は、
ANTHROPIC_API_KEY環境変数を確認します - どちらも見つからない場合は、AI 機能は無効化されます
設定ファイル
AI 設定をより細かく制御するには、以下の場所にある ClickHouse Client の設定ファイルで構成します。$XDG_CONFIG_HOME/clickhouse/config.xml(XDG_CONFIG_HOMEが設定されていない場合は~/.config/clickhouse/config.xml) (XML フォーマット)$XDG_CONFIG_HOME/clickhouse/config.yaml(XDG_CONFIG_HOMEが設定されていない場合は~/.config/clickhouse/config.yaml) (YAML フォーマット)~/.clickhouse-client/config.xml(XML フォーマット、従来の場所)~/.clickhouse-client/config.yaml(YAML フォーマット、従来の場所)- または、
--config-fileで任意の場所を指定します
- XML
- YAML
OpenAI 互換 API の使用 (例: OpenRouter) :
パラメータ
必須パラメータ
必須パラメータ
api_key- AI サービス用の API キー。環境変数で設定している場合は省略できます。- OpenAI:
OPENAI_API_KEY - Anthropic:
ANTHROPIC_API_KEY - 注: 設定ファイル内の API キーは環境変数より優先されます
- OpenAI:
provider- AI プロバイダー:openaiまたはanthropic- 省略した場合、利用可能な環境変数に基づいて自動フォールバックが使用されます
モデル設定
モデル設定
model- 使用するモデル (デフォルト: プロバイダーごとの既定値)- OpenAI:
gpt-4o,gpt-4,gpt-3.5-turboなど - Anthropic:
claude-3-5-sonnet-20241022,claude-3-opus-20240229など - OpenRouter:
anthropic/claude-3.5-sonnetのようなモデル名を使用します
- OpenAI:
接続設定
接続設定
base_url- OpenAI 互換サービス向けのカスタム API エンドポイント (任意)timeout_seconds- リクエストのタイムアウト時間 (秒) (デフォルト:30)
スキーマ探索
スキーマ探索
enable_schema_access- AI がデータベースのスキーマを探索できるようにします (デフォルト:true)max_steps- スキーマ探索時のツール呼び出しの最大ステップ数 (デフォルト:10)
生成パラメータ
生成パラメータ
temperature- ランダム性を制御します。0.0 = 決定論的、1.0 = 創造的。デフォルトでは省略され、明示的に設定した場合にのみモデルに送信されます。これは、一部のモデルがこのパラメータを受け付けないためです。max_tokens- 応答の最大長 (トークン数) (デフォルト:1000)system_prompt- AI へのカスタム指示 (任意)
仕組み
AI SQL ジェネレーターは、複数のステップで処理を行います。- スキーマの検出
- 利用可能なデータベースを一覧表示します
- 関連するデータベース内のテーブルを検出します
CREATE TABLEステートメントを通じてテーブル構造を調べます
- クエリ生成
- 自然言語で表した意図に合致する
- 正しいテーブル名とカラム名を使用する
- 適切な JOIN と集計を適用する
- 実行
制限事項
- 有効なインターネット接続が必要です
- API の利用には、AIプロバイダーによるレート制限やコストが伴います
- 複雑なクエリでは、複数回の調整が必要になる場合があります
- AI が読み取り専用でアクセスできるのはスキーマ情報のみで、実際のデータにはアクセスできません
セキュリティ
- API キーが ClickHouse サーバーに送信されることはありません
- AI が参照するのはスキーマ情報 (テーブル名 / カラム名 / 型) のみで、実際のデータは参照しません
- 生成されるすべてのクエリは、既存のデータベース権限に従います
接続文字列
使用方法
ClickHouse Client は、MongoDB、PostgreSQL、MySQL と同様の接続文字列を使って ClickHouse server に接続することもできます。構文は次のとおりです。注記
ユーザー名、パスワード、またはデータベースを接続文字列で指定した場合、--user、--password、--database では指定できません (逆も同様です) 。
ホスト部分には、ホスト名または IPv4 / IPv6 アドレスを指定できます。
IPv6 アドレスは [] で囲む必要があります。
clickhouse-client の最初の引数として指定する必要があります。
接続文字列は、--host と --port を除き、任意個のほかのコマンドラインオプションと組み合わせて使用できます。
query_parameters では、次のキーを使用できます。
パーセントエンコーディング
以下のパラメータに含まれる US-ASCII 以外の文字、スペース、特殊文字は、パーセントエンコードする必要があります。
userpasswordhostsdatabasequery parameters
例
localhost のポート9000に接続し、クエリ SELECT 1 を実行します。
john として、パスワード secret、ホスト 127.0.0.1、ポート 9000 を指定して localhost に接続します
localhost (IPV6 アドレス [::1]、ポート 9000) に default ユーザーとして接続します。
localhost のポート 9000 に接続します。
default として、ポート9000で localhost に接続します。
localhost のポート9000に接続し、デフォルトのデータベースとして my_database を使用します。
localhost に接続し、接続文字列で指定した my_database データベースを既定として使用し、短縮形の s パラメータを使って安全な接続を行います。
my_user として、パスワードなしで接続します。
localhost に接続します。@ 記号は %40 にパーセントエンコードします。
192.168.1.15, 192.168.1.25.
クエリ IDの形式
対話型モードでは、ClickHouse Client は各クエリの クエリ ID を表示します。デフォルトでは、ID は次の形式になります。query_id_formats タグ内の設定ファイルで指定できます。フォーマット文字列内の {query_id} プレースホルダーはクエリ ID に置き換えられます。タグ内には複数のフォーマット文字列を指定できます。
この機能を使うと、クエリのプロファイリングをしやすくするための URL を生成できます。
例
設定ファイル
ClickHouse Client は、以下のうち存在する最初のファイルを使用します。-c [ -C, --config, --config-file ]パラメーターで指定したファイル./clickhouse-client.[xml|yaml|yml]$XDG_CONFIG_HOME/clickhouse/config.[xml|yaml|yml](XDG_CONFIG_HOMEが設定されていない場合は~/.config/clickhouse/config.[xml|yaml|yml])~/.clickhouse-client/config.[xml|yaml|yml]/etc/clickhouse-client/config.[xml|yaml|yml]
clickhouse-client.xml を参照してください。
- XML
- YAML
環境変数オプション
ユーザー名、パスワード、ホストは、環境変数CLICKHOUSE_USER、CLICKHOUSE_PASSWORD、CLICKHOUSE_HOST で設定できます。
コマンドライン引数 --user、--password、--host、または接続文字列 (指定した場合) は、環境変数よりも優先されます。
コマンドラインオプション
すべてのコマンドラインオプションは、コマンドラインで直接指定することも、設定ファイルで既定値として指定することもできます。一般オプション
接続オプション
--host、--port、--user、--password オプションの代わりに、クライアントは接続文字列もサポートしています。