メインコンテンツまでスキップ
メインコンテンツまでスキップ

ファイル テーブル エンジン

ファイル テーブル エンジンは、サポートされている ファイル形式 のいずれかでファイルにデータを保持します(TabSeparatedNativeなど)。

使用シナリオ:

  • ClickHouseからファイルへのデータエクスポート。
  • データを1つの形式から別の形式に変換。
  • ディスク上のファイルを編集してClickHouseのデータを更新。
注記

このエンジンは現在ClickHouse Cloudでは使用できませんので、代わりにS3テーブル関数を使用してください

ClickHouseサーバーでの使用

Formatパラメータは利用可能なファイル形式の1つを指定します。SELECT クエリを実行する場合、形式は入力に対してサポートされる必要があり、INSERT クエリを実行するには出力に対してサポートされている必要があります。利用可能な形式は、Formats セクションにリストされています。

ClickHouseでは、Fileのファイルシステムパスを指定することはできません。path設定でサーバー構成に定義されたフォルダーが使用されます。

File(Format)を使用してテーブルを作成すると、そのフォルダー内に空のサブディレクトリが作成されます。そのテーブルにデータが書き込まれると、そのサブディレクトリ内のdata.Formatファイルに格納されます。

このサブフォルダーとファイルをサーバーファイルシステム内に手動で作成し、対応する名前でテーブル情報にATTACHすることで、そのファイルからデータをクエリすることができます。

注記

この機能を使用する際は注意してください。ClickHouseはそのようなファイルに対する外部の変更を追跡しません。ClickHouseとClickHouse外での同時書き込みの結果は不定です。

1. file_engine_table テーブルを設定します:

デフォルトでは、ClickHouseは /var/lib/clickhouse/data/default/file_engine_table フォルダーを作成します。

2. data.TabSeparated を含む /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated を手動で作成します:

3. データをクエリします:

ClickHouse-localでの使用

clickhouse-local では、Fileエンジンは Formatに加えてファイルパスを受け入れます。デフォルトの入出力ストリームは、0stdin1stdoutのような数値または人間が読み取れる名前で指定できます。追加のエンジンパラメータまたはファイル拡張子(gzbrxz)に基づいて、圧縮ファイルを読み書きすることも可能です。

例:

実装の詳細

  • 複数の SELECT クエリを同時に実行できますが、INSERT クエリは互いに待機します。
  • INSERT クエリによって新しいファイルを作成することがサポートされています。
  • ファイルが存在する場合、INSERT はそのファイルに新しい値を追加します。
  • サポートされていないもの:
    • ALTER
    • SELECT ... SAMPLE
    • インデックス
    • レプリケーション

PARTITION BY

PARTITION BY — オプションです。パーティションキーでデータをパーティション分割することによって、別々のファイルを作成できます。ほとんどの場合、パーティションキーは必要なく、必要な場合でも通常は月単位でのパーティションキーを使用することが推奨されます。パーティション分割は、クエリの速度を向上させることはありません(ORDER BY式とは対照的です)。過剰に細かいパーティション分割を行ってはいけません。クライアント識別子や名前でデータをパーティション分割しないでください(代わりに、クライアント識別子や名前をORDER BY式の最初のカラムにします)。

月単位のパーティション分割には、toYYYYMM(date_column) 式を使用します。ここで、date_columnDate 型の日付を持つカラムです。パーティション名はここで "YYYYMM" 形式になります。

仮想カラム

  • _path — ファイルへのパス。型: LowCardinality(String)
  • _file — ファイルの名前。型: LowCardinality(String)
  • _size — ファイルのサイズ(バイト単位)。型: Nullable(UInt64)。サイズが不明な場合、値は NULL です。
  • _time — ファイルの最終変更時刻。型: Nullable(DateTime)。時刻が不明な場合、値は NULL です。

設定

  • engine_file_empty_if_not_exists - 存在しないファイルから空のデータを選択できるようにします。デフォルトでは無効です。
  • engine_file_truncate_on_insert - 挿入前にファイルを切り詰めることを許可します。デフォルトでは無効です。
  • engine_file_allow_create_multiple_files - フォーマットにサフィックスがある場合、各挿入で新しいファイルを作成できるようにします。デフォルトでは無効です。
  • engine_file_skip_empty_files - 読み取り時に空のファイルをスキップできるようにします。デフォルトでは無効です。
  • storage_file_read_method - ストレージファイルからデータを読み取る方法。readpreadmmap のいずれかです。mmapメソッドはclickhouse-serverには適用されません(clickhouse-local用です)。デフォルト値:clickhouse-serverの場合はpread、clickhouse-localの場合はmmapです。