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

filesystem テーブル関数

Not supported in ClickHouse Cloud

ディレクトリを再帰的に走査し、ファイルのメタデータ (パス、サイズ、型、権限、更新時刻) と、必要に応じてファイルの内容を含むテーブルを返します。

clickhouse-server モードでは、パスは user_files_path ディレクトリ内である必要があります。user_files_path 内にあるシンボリックリンクがその外部を指している場合、そのリンクはたどられますが、返されるのは (シンボリックリンク経由で見た) パスが user_files_path で始まるエントリのみです。

clickhouse-local モードでは、パスに制限はありません。

構文

filesystem([path])

引数

パラメーター説明
path一覧表示するディレクトリです。絶対パス (サーバーモードでは user_files_path 内にある必要があります) または user_files_path からの相対パスを指定できます。空または省略した場合は、デフォルトで user_files_path が使用されます。

返されるカラム

カラム説明
pathStringエントリを含むディレクトリ (ファイル名またはディレクトリ名そのものは含みません) 。
nameStringファイル名またはディレクトリ名 (パスの最後の部分) 。
fileString (ALIAS of name)name カラムのエイリアス。
typeEnum8ファイル種別: 'none', 'not_found', 'regular', 'directory', 'symlink', 'block', 'character', 'fifo', 'socket', 'unknown'
sizeNullable(UInt64)ファイルサイズ (通常ファイルの場合、バイト単位) 。通常ファイル以外 (ディレクトリ、シンボリックリンクなど) およびエラー時は NULL
depthUInt16再帰の深さ。クエリ対象のディレクトリ自体とその直下の子は 0、1 階層深いエントリは 1、以降同様です。
modification_timeNullable(DateTime64(6))マイクロ秒精度の最終更新時刻。エラー時は NULL
is_symlinkBoolエントリがシンボリックリンクかどうか。
contentNullable(String)ファイルの内容 (通常ファイルの場合) 。通常ファイル以外 (ディレクトリ、シンボリックリンクなど) は NULL。読み取りエラーは例外を発生させます。このカラムを読み取ると実際のファイル I/O が発生するため、不要であれば省略してください。
owner_readBool所有者に読み取り権限があるかどうか。
owner_writeBool所有者に書き込み権限があるかどうか。
owner_execBool所有者に実行権限があるかどうか。
group_readBoolグループに読み取り権限があるかどうか。
group_writeBoolグループに書き込み権限があるかどうか。
group_execBoolグループに実行権限があるかどうか。
others_readBoolその他のユーザーに読み取り権限があるかどうか。
others_writeBoolその他のユーザーに書き込み権限があるかどうか。
others_execBoolその他のユーザーに実行権限があるかどうか。
set_gidBoolSet-GID ビット。
set_uidBoolSet-UID ビット。
sticky_bitBoolスティッキービット。

実際に計算されるのはクエリで使用されるカラムのみであるため、カラムの子集だけを選択する (特に content を省略する) と効率的です。

user_files 内のファイルを一覧表示

SELECT name, type, size, depth
FROM filesystem()
ORDER BY name;

サイズの大きいファイルを見つける

SELECT path, name, size
FROM filesystem()
WHERE type = 'regular' AND size > 1000000
ORDER BY size DESC;

ファイルの内容を表示する

SELECT name, content
FROM filesystem('my_directory')
WHERE name LIKE '%.csv';

直下の子要素のみを表示する

SELECT name, type
FROM filesystem('my_directory')
WHERE depth = 0;