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

file テーブル関数

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月25日