메인 콘텐츠로 건너뛰기
ClickHouse는 더 나은 성능과 공간 효율성을 제공하는 여러 바이너리 형식을 지원합니다. 바이너리 형식은 데이터가 바이너리 형태로 저장되므로 문자 인코딩 측면에서도 안전합니다. 예시를 위해 some_data 테이블데이터를 사용하겠습니다. 사용 중인 ClickHouse 인스턴스에서 그대로 따라 해 보셔도 됩니다.

네이티브 ClickHouse 포맷으로 내보내기

ClickHouse 노드 간에 데이터를 내보내고 가져올 때 가장 효율적인 데이터 포맷은 네이티브 포맷입니다. 내보내기는 INTO OUTFILE 절을 사용하여 수행합니다:
그러면 data.clickhouse 파일이 네이티브 형식으로 생성됩니다.

네이티브 형식에서 가져오기

데이터를 가져오려면, 작은 파일을 다루거나 탐색용으로는 file()을 사용할 수 있습니다:
file() 함수를 사용할 때 ClickHouse Cloud에서는 파일이 있는 머신의 clickhouse client에서 명령을 실행해야 합니다. 다른 방법으로는 clickhouse-local을 사용해 로컬에서 파일을 확인할 수 있습니다.
프로덕션 환경에서는 FROM INFILE을 사용해 데이터를 가져옵니다:

네이티브 형식 압축

COMPRESSION 절을 사용하면 데이터를 네이티브 형식으로 내보낼 때(대부분의 다른 포맷에서도 동일) 압축을 사용할 수도 있습니다:
내보낼 때는 LZ4 압축을 사용했습니다. 데이터를 가져올 때도 이를 지정해야 합니다:

RowBinary로 내보내기

지원되는 또 다른 바이너리 형식은 RowBinary이며, 이를 사용하면 데이터를 바이너리로 표현된 행 형태로 가져오거나 내보낼 수 있습니다:
이렇게 하면 data.binary 파일이 바이너리 행 형식으로 생성됩니다.

RowBinary 파일 살펴보기

이 포맷은 자동 스키마 추론을 지원하지 않으므로, 로드 전에 내용을 살펴보려면 스키마를 명시적으로 정의해야 합니다:
컬럼 목록이 포함된 헤더 행도 추가하는 RowBinaryWithNames 사용을 고려해 보십시오. RowBinaryWithNamesAndTypes는 컬럼 타입이 포함된 헤더 행을 하나 더 추가합니다.

RowBinary 파일에서 가져오기

RowBinary 파일에서 데이터를 불러오려면 FROM INFILE 절을 사용할 수 있습니다:

RawBLOB를 사용한 단일 바이너리 값 가져오기

전체 바이너리 파일을 읽어 테이블의 한 필드에 저장하려는 경우를 가정해 보겠습니다. 이때 RawBLOB 포맷을 사용할 수 있습니다. 이 포맷은 단일 컬럼 테이블에서만 직접 사용할 수 있습니다:
이미지 파일을 images 테이블에 저장하겠습니다:
원본 파일 크기와 같은 data 필드의 길이를 확인할 수 있습니다:

RawBLOB 데이터 내보내기

이 포맷은 INTO OUTFILE 절을 사용해 데이터를 내보낼 때도 사용할 수 있습니다:
값을 2개 이상 내보내면 파일이 손상되므로 LIMIT 1을 사용해야 합니다.

MessagePack

ClickHouse는 MsgPack을 사용해 MessagePack으로 데이터를 가져오고 내보낼 수 있습니다. MessagePack 포맷으로 내보내려면:
MessagePack 파일에서 데이터를 가져오려면:

Protocol Buffers

Protocol Buffers를 사용하려면 먼저 스키마 파일을 정의해야 합니다.
이 스키마 파일(이 경우 schema.proto)의 경로는 Protobuf 포맷에서 format_schema 설정 옵션으로 지정합니다:
이렇게 하면 데이터가 proto.bin 파일에 저장됩니다. ClickHouse는 Protobuf 데이터 가져오기와 중첩된 메시지도 지원합니다. 단일 Protocol Buffer 메시지를 처리하려면 ProtobufSingle 사용을 고려하십시오(이 경우 길이 구분 기호는 생략됩니다).

Cap’n Proto

ClickHouse가 지원하는 또 다른 널리 쓰이는 바이너리 형식의 직렬화 포맷은 Cap’n Proto입니다. Protobuf format과 마찬가지로, 이 예시에서는 스키마 파일(schema.capnp)을 정의해야 합니다:
이제 CapnProto 포맷과 이 스키마를 사용해 가져오고 내보낼 수 있습니다:
Date 컬럼을 대응하는 타입과 일치시키기 위해 UInt32로 형변환해야 했습니다.

기타 포맷

ClickHouse는 다양한 시나리오와 플랫폼을 지원하기 위해 텍스트와 바이너리 형식을 포함한 여러 포맷을 제공합니다. 다음 문서에서 더 많은 포맷과 활용 방법을 살펴보십시오. 또한 clickhouse-local도 확인해 보십시오. ClickHouse 서버를 시작하지 않고 로컬/원격 파일을 다룰 수 있는 이식 가능한 완전한 기능의 도구입니다.
마지막 수정일 2026년 7월 1일