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

File Table Engine

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

使用シナリオ:

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

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

ClickHouseサーバーでの使用

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

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

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

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

注記

この機能には注意が必要です。ClickHouseはそのようなファイルへの外部変更を追跡しません。ClickHouse外部と同時に書き込みを行う結果は未定義です。

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

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

2. 手動で/var/lib/clickhouse/data/default/file_engine_table/data.TabSeparatedを作成し、次の内容を含めます:

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

ClickHouse-localでの使用

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

例:

実装の詳細

  • 複数の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です。