ディレクトリを再帰的に走査し、ファイルのメタデータ (パス、サイズ、種別、権限、最終更新時刻) と、必要に応じてファイルの内容を含むテーブルを返します。
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 が使用されます。 |
返されるカラム
| カラム | 型 | 説明 |
|---|---|---|
path |
String |
エントリが含まれるディレクトリ (ファイル名またはディレクトリ名自体は含みません) 。 |
name |
String |
ファイルまたはディレクトリの名前 (パスの最後の要素) 。 |
file |
String (ALIAS of name) |
name カラムの別名。 |
type |
Enum8 |
ファイル種別: 'none', 'not_found', 'regular', 'directory', 'symlink', 'block', 'character', 'fifo', 'socket', 'unknown'。 |
size |
Nullable(UInt64) |
ファイルサイズ (通常ファイルの場合、バイト単位) 。通常ファイル以外 (ディレクトリ、シンボリックリンクなど) およびエラー時は NULL。 |
depth |
UInt16 |
再帰の深さ。クエリ対象のディレクトリ自体とその直下の子は 0、1 階層深いエントリは 1、以降も同様です。 |
modification_time |
Nullable(DateTime64(6)) |
最終更新時刻 (マイクロ秒精度) 。エラー時は NULL。 |
is_symlink |
Bool |
そのエントリがシンボリックリンクかどうか。 |
content |
Nullable(String) |
ファイルの内容 (通常ファイルの場合) 。通常ファイル以外 (ディレクトリ、シンボリックリンクなど) では NULL。読み取りエラー時は例外が発生します。このカラムを読み取ると実際のファイル I/O がトリガーされるため、不要であれば省略してください。 |
owner_read |
Bool |
所有者に読み取り権限があるかどうか。 |
owner_write |
Bool |
所有者に書き込み権限があるかどうか。 |
owner_exec |
Bool |
所有者に実行権限があるかどうか。 |
group_read |
Bool |
グループに読み取り権限があるかどうか。 |
group_write |
Bool |
グループに書き込み権限があるかどうか。 |
group_exec |
Bool |
グループに実行権限があるかどうか。 |
others_read |
Bool |
その他のユーザーに読み取り権限があるかどうか。 |
others_write |
Bool |
その他のユーザーに書き込み権限があるかどうか。 |
others_exec |
Bool |
その他のユーザーに実行権限があるかどうか。 |
set_gid |
Bool |
Set-GID ビット。 |
set_uid |
Bool |
Set-UID ビット。 |
sticky_bit |
Bool |
スティッキービット。 |
クエリで実際に使用されるカラムだけが計算されるため、一部のカラムだけを選択するのは効率的です (特に 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;