メインコンテンツへスキップ
s3 テーブル関数と同様に、ファイルに対して SELECT したりファイルへ INSERT したりできるテーブル形式インターフェイスを提供するテーブルエンジンです。ローカルファイルを扱う場合は file() を使用し、S3、GCS、MinIO などのオブジェクトストレージ内のバケットを扱う場合は s3() を使用します。 file 関数は、SELECT クエリおよび INSERT クエリで使用でき、ファイルの読み取りや書き込みを行えます。

構文

SELECT クエリでは、pathArray(String) を返す式を指定することもできます。

引数

structure 引数を省略すると、ClickHouse はフォーマット自体からスキーマを推論します。 フォーマットごとに、デフォルトのカラム名と型は異なります。 特定のフォーマットのスキーマを確認するには、format テーブル関数に対して DESC を使用します。たとえば:

戻り値

ファイル内のデータを読み書きするためのテーブルです。

File への書き込み例

TSVファイルに書き込む

その結果、データはファイル test.tsv に書き込まれます。

複数のTSVファイルへのパーティション別書き込み

file() 型のテーブル関数にデータを挿入する際に PARTITION BY 式を指定すると、パーティションごとに別々のファイルが作成されます。データをファイルごとに分割することで、読み取り処理のパフォーマンス向上に役立ちます。
その結果、データは test_1.tsvtest_2.tsvtest_3.tsv の3つのファイルに書き込まれます。

ファイルから読み込む例

CSVファイルからSELECT

まず、サーバー設定で user_files_path を設定し、test.csv ファイルを用意します:
次に、test.csv からテーブルにデータを読み込み、先頭の2行を取得します:

ファイルからテーブルへデータを挿入する

archive1.zip または archive2.zip に含まれる table.csv からデータを読み取る:

パス内のグロブ

パスではグロブを使用できます。ファイルは、接尾辞やプレフィックスだけでなく、パスパターン全体に一致する必要があります。例外が 1 つあり、パスが既存の ディレクトリを指していてグロブを使用していない場合は、* が暗黙的にパスに追加されるため、 ディレクトリ内のすべてのファイルが選択されます。
  • * — 空文字列を含み、/ を除く任意の長さの文字列を表します。
  • ? — 任意の 1 文字を表します。
  • {some_string,another_string,yet_another_one} — 文字列 'some_string''another_string''yet_another_one' のいずれかに置き換えられます。これらの文字列には / 記号を含めることができます。
  • {N..M}>= N かつ <= M の任意の数を表します。
  • ** - フォルダ内のすべてのファイルを再帰的に表します。
{} を使った構文は、remote および hdfs テーブル関数と似ています。

次の相対パスを持つファイルがあるとします。
  • some_dir/some_file_1
  • some_dir/some_file_2
  • some_dir/some_file_3
  • another_dir/some_file_1
  • another_dir/some_file_2
  • another_dir/some_file_3
すべてのファイルに含まれる行数の合計を取得するクエリ:
同じことを実現できる別のパス式:
暗黙の * を使用して、some_dir の総行数をクエリします。
ファイルの一覧に先頭ゼロ付きの数値範囲が含まれる場合は、各桁ごとに波かっこを使った構文を使用するか、? を使用してください。
file000file001、…、file999 という名前のファイルの行数の合計をクエリします:
big_dir/ ディレクトリ内のすべてのファイルを再帰的に対象として、合計行数をクエリします:
ディレクトリ big_dir/ 内の任意のフォルダにある file002 ファイルすべてを再帰的に対象にして、合計行数をクエリします:

仮想カラム

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

use_hive_partitioning 設定

use_hive_partitioning 設定が 1 に設定されている場合、ClickHouse はパス (/name=value/) 内の Hive スタイルのパーティション化を検出し、クエリでパーティションカラムを仮想カラムとして使用できるようになります。これらの仮想カラムは、パーティション化されたパス内の名前と同じ名前になります。 Hive スタイルのパーティション化で作成された仮想カラムを使用する

設定

最終更新日 2026年6月19日