filesystem 테이블 함수
filesystem 테이블 함수 (filesystem)
디렉터리를 재귀적으로 순회하면서 파일 메타데이터(경로, 크기, 타입, 권한, 수정 시간)와 선택적으로 파일 내용을 담은 테이블을 반환해요.
clickhouse-server 모드에서는 경로가 user_files_path 디렉터리 안에 있어야 합니다. user_files_path 내부에서 밖을 가리키는 심볼릭 링크는 따라가지만, (심볼릭 링크를 통한) 경로가 user_files_path로 시작하는 항목만 반환됩니다.
clickhouse-local 모드에서는 경로 제한이 없어요.
출처: 문서
본문
디렉터리를 재귀적으로 순회해 파일 메타데이터(경로, 크기, 타입, 권한, 수정 시간)와 선택적으로 파일 내용을 담은 테이블을 반환합니다.
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 (name의 ALIAS) |
name 컬럼의 별칭. |
type |
Enum8 |
파일 타입: 'none', 'not_found', 'regular', 'directory', 'symlink', 'block', 'character', 'fifo', 'socket', 'unknown'. |
size |
Nullable(UInt64) |
파일 크기(바이트, 일반 파일용). 일반 파일이 아닌 항목(디렉터리, 심볼릭 링크 등)과 오류 시 NULL. |
depth |
UInt16 |
재귀 깊이. 조회한 디렉터리 자체와 그 직계 자식은 0, 한 단계 더 깊은 항목은 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 |
고정(sticky) 비트. |
쿼리에서 실제로 사용한 컬럼만 계산되므로, 컬럼의 부분 집합(특히 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;