> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ClickHouse の gRPC インターフェイスのドキュメント

# gRPC インターフェイス

<div id="grpc-interface-introduction">
  ## はじめに
</div>

ClickHouse は [gRPC](https://grpc.io/) インターフェイスをサポートしています。gRPC は、HTTP/2 と [Protocol Buffers](https://en.wikipedia.org/wiki/Protocol_Buffers) を使用するオープンソースのリモートプロシージャコールシステムです。ClickHouse の gRPC 実装では、以下をサポートしています。

* SSL;
* 認証;
* セッション;
* 圧縮;
* 同一チャネル経由での並列クエリ;
* クエリのキャンセル;
* Progress とログの取得;
* 外部テーブル。

このインターフェイスの仕様は [clickhouse\_grpc.proto](https://github.com/ClickHouse/ClickHouse/blob/master/src/Server/grpc_protos/clickhouse_grpc.proto) に記載されています。

<div id="grpc-interface-configuration">
  ## gRPC 設定
</div>

gRPC インターフェイスを使用するには、メインの[サーバー設定](/ja/concepts/features/configuration/server-config/configuration-files)で `grpc_port` を設定します。その他の設定オプションについては、次の例を参照してください。

```xml theme={null}
<grpc_port>9100</grpc_port>
    <grpc>
        <enable_ssl>false</enable_ssl>

        <!-- 以下の2つのファイルはSSLが有効な場合にのみ使用されます -->
        <ssl_cert_file>/path/to/ssl_cert_file</ssl_cert_file>
        <ssl_key_file>/path/to/ssl_key_file</ssl_key_file>

        <!-- サーバーがクライアントに証明書を要求するかどうか -->
        <ssl_require_client_auth>false</ssl_require_client_auth>

        <!-- 以下のファイルはssl_require_client_auth=trueの場合にのみ使用されます -->
        <ssl_ca_cert_file>/path/to/ssl_ca_cert_file</ssl_ca_cert_file>

        <!-- デフォルトの圧縮アルゴリズム（クライアントが別のアルゴリズムを指定しない場合に適用されます。QueryInfoのresult_compressionを参照）。
             サポートされているアルゴリズム: none, deflate, gzip, stream_gzip -->
        <compression>deflate</compression>

        <!-- デフォルトの圧縮レベル（クライアントが別のレベルを指定しない場合に適用されます。QueryInfoのresult_compressionを参照）。
             サポートされているレベル: none, low, medium, high -->
        <compression_level>medium</compression_level>

        <!-- 送受信メッセージサイズの上限（バイト単位）。-1は無制限を意味します -->
        <max_send_message_size>-1</max_send_message_size>
        <max_receive_message_size>-1</max_receive_message_size>

        <!-- 詳細ログを取得する場合は有効にしてください -->
        <verbose_logs>false</verbose_logs>
    </grpc>
```

<div id="grpc-client">
  ## 組み込みクライアント
</div>

提供されている[仕様](https://github.com/ClickHouse/ClickHouse/blob/master/src/Server/grpc_protos/clickhouse_grpc.proto)を使用して、gRPC がサポートする任意のプログラミング言語でクライアントを作成できます。
また、組み込みの Python クライアントを使用することもできます。これはリポジトリ内の [utils/grpc-client/clickhouse-grpc-client.py](https://github.com/ClickHouse/ClickHouse/blob/master/utils/grpc-client/clickhouse-grpc-client.py) にあります。組み込みクライアントには、Python モジュールの [grpcio and grpcio-tools](https://grpc.io/docs/languages/python/quickstart) が必要です。

このクライアントは次の引数をサポートしています。

* `--help` – ヘルプメッセージを表示して終了します。
* `--host HOST, -h HOST` – サーバー名です。デフォルト値: `localhost`。IPv4 アドレスまたは IPv6 アドレスも使用できます。
* `--port PORT` – 接続先のポートです。このポートはサーバー設定で有効になっている必要があります (`grpc_port` を参照) 。デフォルト値: `9100`。
* `--user USER_NAME, -u USER_NAME` – ユーザー名です。デフォルト値: `default`。
* `--password PASSWORD` – パスワードです。デフォルト値: 空文字列。
* `--query QUERY, -q QUERY` – 非対話型モードで処理するクエリです。
* `--database DATABASE, -d DATABASE` – デフォルトのデータベースです。指定しない場合は、server settings で設定された現在のデータベースが使用されます (デフォルトでは `default`) 。
* `--format OUTPUT_FORMAT, -f OUTPUT_FORMAT` – 結果出力の[フォーマット](/ja/reference/formats)です。対話型モードでのデフォルト値: `PrettyCompact`。
* `--debug` – デバッグ情報の表示を有効にします。

クライアントを対話型モードで実行するには、`--query` 引数を指定せずに実行します。

バッチモードでは、クエリデータを `stdin` 経由で渡せます。

**クライアントの使用例**

次の例では、テーブルを作成し、CSV ファイルからデータを読み込みます。次に、そのテーブルの内容をクエリします。

```bash title="Query" theme={null}
./clickhouse-grpc-client.py -q "CREATE TABLE grpc_example_table (id UInt32, text String) ENGINE = MergeTree() ORDER BY id;"
echo -e "0,Input data for\n1,gRPC protocol example" > a.csv
cat a.csv | ./clickhouse-grpc-client.py -q "INSERT INTO grpc_example_table FORMAT CSV"

./clickhouse-grpc-client.py --format PrettyCompact -q "SELECT * FROM grpc_example_table;"
```

```text title="Response" theme={null}
┌─id─┬─text──────────────────┐
│  0 │ Input data for        │
│  1 │ gRPC protocol example │
└────┴───────────────────────┘
```
