メインコンテンツへスキップ

clickhouse-local と ClickHouse の使い分け

clickhouse-local は、完全なデータベースサーバーをインストールしなくても、ローカルやリモートのファイルに対して SQL で高速に処理を行いたい開発者に最適な、手軽に使える ClickHouse のバージョンです。clickhouse-local では、開発者はコマンドラインから直接 SQL コマンド (ClickHouse SQL dialect を使用) を実行できるため、完全な ClickHouse 環境をインストールしなくても、ClickHouse の機能をシンプルかつ効率的に利用できます。clickhouse-local の主な利点の 1 つは、clickhouse-client のインストール時にすでに含まれていることです。つまり、複雑なインストール作業を行わなくても、開発者はすぐに clickhouse-local を使い始められます。 clickhouse-local は、開発やテスト、ファイル処理には非常に便利なツールですが、エンドユーザーやアプリケーション向けの提供には適していません。このような用途では、オープンソースの ClickHouse を使用することを推奨します。ClickHouse は、大規模な分析ワークロードを処理するよう設計された強力な OLAP データベースです。大規模なデータセットに対する複雑なクエリを高速かつ効率的に処理できるため、高いパフォーマンスが求められる本番環境に最適です。さらに、ClickHouse は、レプリケーション、シャーディング、高可用性など、アプリケーションの提供や大規模データセットの処理に向けてスケールするうえで不可欠な幅広い機能を備えています。より大きなデータセットを扱う必要がある場合や、エンドユーザーやアプリケーション向けに提供する必要がある場合は、clickhouse-local ではなくオープンソースの ClickHouse を使用することを推奨します。 以下のドキュメントでは、ローカルファイルへのクエリS3 上の Parquet ファイルの読み取り など、clickhouse-local の使用例を紹介しています。ぜひご覧ください。

clickhouse-local をダウンロードする

clickhouse-local は、ClickHouseサーバーや clickhouse-client と同じ clickhouse バイナリを使って実行されます。最新バージョンをダウンロードする最も簡単な方法は、次のコマンドを使用することです。
先ほどダウンロードしたバイナリを使うと、さまざまな ClickHouse のツールやユーティリティを実行できます。ClickHouse をデータベースサーバーとして実行する場合は、クイックスタートをご覧ください。

SQL を使用してファイル内のデータをクエリする

clickhouse-local の一般的な用途の 1 つは、ファイルに対してアドホッククエリを実行することです。つまり、データをテーブルに挿入する必要はありません。clickhouse-local はファイルから一時テーブルにデータをストリーミングし、SQL を実行できます。 ファイルが clickhouse-local と同じマシン上にある場合は、読み込むファイルを指定するだけです。次の reviews.tsv ファイルには、Amazon 製品レビューのサンプルが含まれています。
このコマンドは、次のコマンドのショートカットです。
ClickHouse は、ファイル名の拡張子から、そのファイルがタブ区切りフォーマットであることを認識します。フォーマットを明示的に指定する必要がある場合は、多くの ClickHouse 入力フォーマットのいずれかを追加するだけです。
fileテーブル関数はテーブルを作成し、DESCRIBEを使うと推論されたスキーマを確認できます:
ファイル名では globs を使用できます (glob の置換を参照してください) 。例:
最も評価の高い製品を見つけてみましょう:

AWS S3 内の Parquet ファイル内のデータをクエリする

S3 にファイルがある場合は、clickhouse-locals3 テーブル関数を使って、そのファイルをその場でクエリできます (データを ClickHouse テーブルに挿入する必要はありません) 。ここでは、公開バケット内にある house_0.parquet というファイルを使用します。このファイルには、英国で売却された住宅の価格が含まれています。では、行数を見てみましょう。
このファイルには270万行あります:
ClickHouse がファイルから推定したスキーマを確認しておくと便利です。
最も高額な地区がどこなのか見てみましょう。
ClickHouse にファイルを取り込む準備ができたら、ClickHouseサーバー を起動し、file および s3 テーブル関数の結果を MergeTree テーブルに挿入します。詳細については、クイックスタート を参照してください。

フォーマット変換

異なるフォーマット間でデータを変換するには、clickhouse-local を利用できます。例:
フォーマットはファイル拡張子から自動的に判別されます:
手軽な方法として、--copy 引数を使って記述することもできます。

使い方

デフォルトでは、clickhouse-local は同じホスト上の ClickHouseサーバーのデータにアクセスでき、サーバー設定には依存しません。また、--config-file 引数を使用してサーバー設定を読み込むこともできます。一時データ用には、デフォルトで一意の一時データディレクトリが作成されます。 基本的な使い方 (Linux) :
基本的な使い方 (Mac) :
clickhouse-local は、WSL2 経由で Windows でもサポートされています。
引数:
  • -S, --structure — 入力データのテーブル構造。
  • --input-format — 入力フォーマット。デフォルトは TSV です。
  • -F, --file — データへのパス。デフォルトは stdin です。
  • -q, --query; を区切り文字として実行するクエリ。--query は複数回指定できます。例: --query "SELECT 1" --query "SELECT 2"--queries-file と同時には使用できません。
  • --queries-file - 実行するクエリが含まれたファイルのパス。--queries-file は複数回指定できます。例: --query queries1.sql --query queries2.sql--query と同時には使用できません。
  • --multiquery, -n – 指定すると、--query オプションの後にセミコロン区切りで複数のクエリを指定できます。利便性のため、--query を省略して --multiquery の後にクエリを直接渡すこともできます。
  • -N, --table — 出力データの格納先となるテーブル名。デフォルトは table です。
  • -f, --format, --output-format — 出力フォーマット。デフォルトは TSV です。
  • -d, --database — デフォルトのデータベース。デフォルトは _local です。
  • --stacktrace — 例外発生時にデバッグ出力をダンプするかどうか。
  • --echo — 実行前にクエリを表示します。
  • --verbose — クエリ実行の詳細を表示します。
  • --logger.console — コンソールにログを出力します。
  • --logger.log — ログファイル名。
  • --logger.level — ログレベル。
  • --ignore-error — クエリが失敗しても処理を停止しません。
  • -c, --config-file — ClickHouse server と同じ形式の設定ファイルへのパス。デフォルトでは設定は空です。
  • --no-system-tables — システムテーブルをアタッチしません。
  • --helpclickhouse-local の引数リファレンス。
  • -V, --version — バージョン情報を表示して終了します。
また、--config-file の代わりに、各 ClickHouse 設定変数に対応する引数を使用するほうが一般的です。

コマンド

LS コマンド

clickhouse-local がアクセスできる現在の作業ディレクトリ内のすべてのファイルを一覧表示します。 次のように対話型モードで実行できます。
Query
Response
引数 -q を使って、クエリとして実行することもできます:
Response

CLEAR コマンド

端末画面を消去します (Linux の clear コマンドや、多くの端末での Ctrl+L と同様です) 。これはクライアント側の動作であり、SQL エンジンには送信されません。 clickhouse-local では、このメタコマンドは 対話 モード、および -q--queries-file の入力で認識されます (-q と同じクライアント経路で、考え方は ls と同じです) 。そのため、clear 単体では UNKNOWN_IDENTIFIER エラーは発生しません。リモートの clickhouse-client --queries-file は変更されていません。ファイルの内容は SQL としてのみ実行されます (テキストレベルのメタコマンドはありません) 。 clickhouse-client では、対話 モードでのみ認識されます。-q やクエリファイルでは、clear は引き続き SQL として解析されるため、自動化では、タイプミスが無言の no-op になるのではなく、従来どおりエラーになる動作が維持されます。 サポートされる形式: clearCLEAR/clear (末尾の任意の ; は無視されます) 。標準出力が端末ではない場合 (たとえば出力をパイプしている場合) 、このメタコマンドは認識されれば受け付けられますが、制御シーケンスは出力されません。 clickhouse-local-q を使用する場合:

Query
前の例と同じです:
Query
stdin--file 引数を使用する必要はなく、file テーブル関数を使って任意の数のファイルを開くことができます:
Query
それでは、各 Unix ユーザーごとに memory user を出力してみましょう:
Query
Response
最終更新日 2026年6月12日