INTO OUTFILE 절

INTO OUTFILE 절

INTO OUTFILE 절은 SELECT 쿼리의 결과를 클라이언트 쪽의 파일로 리다이렉트해요. 압축 파일도 지원하며, 압축 타입은 파일 이름의 확장자로 자동 감지돼요(기본적으로 'auto' 모드). 또는 COMPRESSION 절에서 명시적으로 지정할 수도 있고, 특정 압축 타입의 압축 레벨은 LEVEL 절에서 지정할 수 있어요.

출처: 문서

본문

INTO OUTFILE 절은 SELECT 쿼리의 결과를 클라이언트 쪽의 파일로 리다이렉트해요. 압축 파일도 지원돼요. 압축 타입은 파일 이름의 확장자로 감지되며, 기본적으로 'auto' 모드가 사용돼요. 또는 COMPRESSION 절에서 명시적으로 지정할 수도 있어요. 특정 압축 타입의 압축 레벨은 LEVEL 절에서 지정할 수 있어요.

Syntax (구문)

SELECT <expr_list> INTO OUTFILE file_name [AND STDOUT] [APPEND | TRUNCATE] [COMPRESSION type [LEVEL level]]

file_nametype은 문자열 리터럴이에요. 지원되는 압축 타입은 'none', 'gzip', 'deflate', 'br', 'xz', 'zstd', 'lz4', 'bz2', 'snappy'예요. snappy의 경우 와이어(wire) 형식은 snappy_mode 설정으로 선택되며 기본값은 basic이에요. level은 숫자 리터럴이에요. 다음과 같은 범위의 양의 정수가 지원돼요. gzip, deflate, lz4 타입은 1-12, zstd 타입은 1-22, 그 외 압축 타입은 1-9예요. gzipdeflate의 경우 9보다 큰 레벨은 libdeflate가 포함된 기본 빌드가 필요하며, libdeflate가 없는 빌드는 1-9 레벨만 지원해요.

Implementation Details (구현 세부 사항)

  • 이 기능은 command-line clientclickhouse-local에서 사용할 수 있어요. 따라서 HTTP interface로 보낸 쿼리는 실패하게 돼요.
  • 같은 파일 이름의 파일이 이미 존재하면 쿼리는 실패해요.
  • 기본 output formatTabSeparated예요(command-line client 배치 모드와 동일). 이를 바꾸려면 FORMAT 절을 사용해요.
  • 쿼리에 AND STDOUT을 명시하면 파일에 쓰여진 출력이 표준 출력에도 함께 표시돼요. 압축을 사용하는 경우에는 평문(plaintext)이 표준 출력에 표시돼요.
  • 쿼리에 APPEND를 명시하면 출력이 기존 파일에 추가돼요. 압축을 사용하는 경우에는 append를 사용할 수 없어요.
  • 이미 존재하는 파일에 쓸 때는 APPEND 또는 TRUNCATE를 사용해야 해요.

Example (예제) command-line client로 다음 쿼리를 실행해 봐요.

Query (쿼리)

clickhouse-client --query="SELECT 1,'ABC' INTO OUTFILE 'select.gz' FORMAT CSV;"
zcat select.gz

Response (응답)

1,"ABC"

더 알아보기 (Learn more)