메인 콘텐츠로 건너뛰기
ClickHouse는 널리 알려진 대부분의 텍스트 및 바이너리 데이터 포맷을 지원합니다. 이를 통해 거의 모든 데이터 파이프라인에 쉽게 통합하여 ClickHouse의 이점을 활용할 수 있습니다.

입력 형식

입력 형식은 다음 용도로 사용됩니다.
  • INSERT SQL 문에 제공된 데이터 파싱
  • File, URL, HDFS와 같은 파일 기반 테이블(file-backed tables)에서 SELECT 쿼리 수행
  • 딕셔너리 읽기
ClickHouse에서 데이터를 효율적으로 수집하려면 적절한 입력 형식을 선택하는 것이 매우 중요합니다. 지원되는 포맷이 70개가 넘기 때문에, 가장 성능이 뛰어난 옵션을 선택하면 삽입 속도, CPU 및 메모리 사용량, 전반적인 시스템 효율성에 큰 차이를 만들 수 있습니다. 이러한 선택에 도움을 드리기 위해 포맷별 수집 성능을 벤치마크했으며, 그 결과 다음과 같은 핵심 사항을 확인했습니다.
  • Native 포맷은 가장 효율적인 입력 형식입니다. 가장 뛰어난 압축률, 가장 낮은 리소스 사용량, 최소한의 서버 측 처리 오버헤드를 제공합니다.
  • 압축은 필수입니다 - LZ4는 CPU 비용을 거의 늘리지 않으면서 데이터 크기를 줄여 주고, ZSTD는 더 높은 압축률을 제공하는 대신 CPU 사용량이 더 필요합니다.
  • 사전 정렬의 영향은 중간 정도입니다. ClickHouse가 이미 효율적으로 정렬하기 때문입니다.
  • 배칭은 효율성을 크게 높입니다 - 배치가 클수록 삽입 오버헤드가 줄고 처리량이 향상됩니다.
결과와 모범 사례를 자세히 살펴보려면 전체 벤치마크 분석을 읽어보십시오. 전체 테스트 결과는 FastFormats 온라인 대시보드에서 확인하십시오.

출력 형식

출력에 지원되는 포맷은 다음 용도로 사용됩니다:
  • SELECT 쿼리 결과를 정렬
  • 파일 기반 테이블에 INSERT 작업 수행

포맷 개요

지원되는 포맷은 다음과 같습니다:
포맷입력출력
TabSeparated
TabSeparatedRaw
TabSeparatedWithNames
TabSeparatedWithNamesAndTypes
TabSeparatedRawWithNames
TabSeparatedRawWithNamesAndTypes
Template
TemplateIgnoreSpaces
CSV
CSVWithNames
CSVWithNamesAndTypes
CustomSeparated
CustomSeparatedWithNames
CustomSeparatedWithNamesAndTypes
SQLInsert
Values
Vertical
JSON
JSONAsString
JSONAsObject
JSONStrings
JSONColumns
JSONColumnsWithMetadata
JSONCompact
JSONCompactStrings
JSONCompactColumns
JSONEachRow
PrettyJSONEachRow
JSONEachRowWithProgress
JSONStringsEachRow
JSONStringsEachRowWithProgress
JSONCompactEachRow
JSONCompactEachRowWithNames
JSONCompactEachRowWithNamesAndTypes
JSONCompactEachRowWithProgress
JSONCompactStringsEachRow
JSONCompactStringsEachRowWithNames
JSONCompactStringsEachRowWithNamesAndTypes
JSONCompactStringsEachRowWithProgress
JSONObjectEachRow
BSONEachRow
TSKV
Pretty
PrettyNoEscapes
PrettyMonoBlock
PrettyNoEscapesMonoBlock
PrettyCompact
PrettyCompactNoEscapes
PrettyCompactMonoBlock
PrettyCompactNoEscapesMonoBlock
PrettySpace
PrettySpaceNoEscapes
PrettySpaceMonoBlock
PrettySpaceNoEscapesMonoBlock
Prometheus
Protobuf
ProtobufSingle
ProtobufList
Avro
AvroConfluent
Parquet
ParquetMetadata
Arrow
ArrowStream
ORC
One
Npy
RowBinary
RowBinaryWithNames
RowBinaryWithNamesAndTypes
RowBinaryWithDefaults
Native
Buffers
Null
Hash
XML
CapnProto
LineAsString
LineAsStringWithNames
LineAsStringWithNamesAndTypes
Regexp
RawBLOB
MsgPack
MySQLDump
DWARF
Markdown
Form
일부 포맷 처리 매개변수는 ClickHouse 설정을 통해 제어할 수 있습니다. 자세한 내용은 설정 섹션을 참조하십시오.

포맷 스키마

포맷 스키마를 포함하는 파일 이름은 format_schema 설정으로 지정합니다. Cap'n ProtoProtobuf 포맷 중 하나를 사용할 때는 이 설정을 반드시 지정해야 합니다. 포맷 스키마는 파일 이름과 그 파일에 있는 메시지 유형 이름을 콜론으로 구분해 결합한 형태이며, 예를 들어 schemafile.proto:MessageType와 같습니다. 파일에 해당 포맷의 표준 확장자(예: Protobuf.proto)가 있으면 이를 생략할 수 있으며, 이 경우 포맷 스키마는 schemafile:MessageType 형태가 됩니다. 대화형 모드에서 client를 통해 데이터를 입력하거나 출력하는 경우, 포맷 스키마에 지정된 파일 이름에는 절대 경로나 클라이언트의 현재 디렉터리를 기준으로 한 상대 경로를 사용할 수 있습니다. batch mode에서 client를 사용하는 경우에는 보안상의 이유로 스키마 경로가 상대 경로여야 합니다. HTTP 인터페이스를 통해 데이터를 입력하거나 출력하는 경우, 포맷 스키마에 지정된 파일 이름은 서버 구성의 format_schema_path에서 지정한 디렉터리에 있어야 합니다.

오류 건너뛰기

CSV, TabSeparated, TSKV, JSONEachRow, Template, CustomSeparated, Protobuf와 같은 일부 포맷은 파싱 오류가 발생하면 손상된 행을 건너뛰고 다음 행의 시작부터 파싱을 계속할 수 있습니다. input_format_allow_errors_numinput_format_allow_errors_ratio 설정을 참조하십시오. 제한 사항:
  • 파싱 오류가 발생하면 JSONEachRow는 새 줄(또는 EOF)까지의 모든 데이터를 건너뛰므로, 오류 수를 올바르게 계산하려면 행이 \n으로 구분되어야 합니다.
  • TemplateCustomSeparated는 다음 행의 시작을 찾기 위해 마지막 컬럼 뒤의 구분자와 행 사이의 구분자를 사용하므로, 둘 중 하나 이상이 비어 있지 않을 때만 오류 건너뛰기가 작동합니다.
마지막 수정일 2026년 6월 10일