file 테이블 함수
file을 사용하고, S3, GCS 또는 MinIO와 같은 객체 스토리지의 버킷으로 작업할 때는 s3를 사용하십시오.
file 함수는 파일을 읽거나 파일에 쓰기 위해 SELECT 및 INSERT 쿼리에서 사용할 수 있습니다.
구문
SELECT 쿼리에서는 path가 Array(String)을 반환하는 표현식일 수도 있습니다:
인수
반환 값
파일에 쓰는 예시
TSV 파일에 쓰기
test.tsv 파일에 기록됩니다:
여러 TSV 파일로 파티션별 쓰기
file 유형의 테이블 함수에 데이터를 삽입할 때 PARTITION BY 표현식을 지정하면 각 파티션별로 별도의 파일이 생성됩니다. 데이터를 여러 파일로 나누면 읽기 작업의 성능을 높이는 데 도움이 됩니다.
test_1.tsv, test_2.tsv, test_3.tsv의 세 개 파일에 저장됩니다.
파일에서 읽어오는 예시
CSV 파일에서 SELECT
user_files_path를 설정하고 test.csv 파일을 준비합니다:
test.csv의 데이터를 테이블에 읽어 들인 후 처음 두 행을 선택합니다:
파일의 데이터를 테이블에 삽입하기
archive1.zip 또는 archive2.zip(또는 둘 다)에 있는 table.csv에서 데이터를 읽습니다:
경로의 글롭 패턴
*가 경로에 암묵적으로 추가되어
디렉터리 안의 모든 파일이 선택됩니다.
*— 빈 문자열을 포함하되/를 제외한 임의 개수의 문자를 나타냅니다.?— 임의의 단일 문자를 나타냅니다.{some_string,another_string,yet_another_one}—'some_string','another_string','yet_another_one'문자열 중 하나로 대체됩니다. 이 문자열에는/기호를 포함할 수 있습니다.{N..M}—>= N이고<= M인 임의의 숫자를 나타냅니다.**- 폴더 내부의 모든 파일을 재귀적으로 나타냅니다.
{}를 사용하는 구문은 remote 및 hdfs 테이블 함수와 유사합니다.
예시
some_dir/some_file_1some_dir/some_file_2some_dir/some_file_3another_dir/some_file_1another_dir/some_file_2another_dir/some_file_3
*를 사용해 some_dir의 전체 행 수를 조회합니다:
파일 목록에 앞자리가 0인 숫자 범위가 포함된 경우, 각 자리수를 개별적으로 중괄호로 지정하는 구문을 사용하거나
?를 사용하십시오.file000, file001, … , 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 스타일 파티셔닝을 감지하고, 쿼리에서 파티션 컬럼을 가상 컬럼(virtual columns)으로 사용할 수 있습니다. 이러한 가상 컬럼은 파티셔닝된 경로의 이름과 동일한 이름을 가집니다.
예시
Hive 스타일 파티셔닝으로 생성된 가상 컬럼 사용