BSONEachRow
| Input | Output | Alias |
|---|---|---|
| ✔ | ✔ |
설명
BSONEachRow 형식은 데이터를 구분자 없이 연속된 Binary JSON(BSON) 문서 시퀀스로 파싱합니다.
각 행은 단일 문서로 표현되며, 각 컬럼은 컬럼 이름을 키로 갖는 단일 BSON 문서 필드로 표현됩니다.
데이터 타입 매칭
출력 시에는 ClickHouse 타입과 BSON 타입 사이에 다음과 같은 매핑을 사용합니다:
| ClickHouse type | BSON 타입 |
|---|---|
| Bool | \x08 boolean |
| Int8/UInt8/Enum8 | \x10 int32 |
| Int16/UInt16/Enum16 | \x10 int32 |
| Int32 | \x10 int32 |
| UInt32 | \x12 int64 |
| Int64/UInt64 | \x12 int64 |
| Float32/Float64 | \x01 double |
| Date/Date32 | \x10 int32 |
| DateTime | \x12 int64 |
| DateTime64 | \x09 datetime |
| Decimal32 | \x10 int32 |
| Decimal64 | \x12 int64 |
| Decimal128 | \x05 바이너리, \x00 바이너리 서브타입, 크기 = 16 |
| Decimal256 | \x05 바이너리, \x00 바이너리 서브타입, 크기 = 32 |
| Int128/UInt128 | \x05 바이너리, \x00 바이너리 서브타입, 크기 = 16 |
| Int256/UInt256 | \x05 바이너리, \x00 바이너리 서브타입, 크기 = 32 |
| String/FixedString | \x05 바이너리, \x00 바이너리 서브타입 또는 설정 output_format_bson_string_as_string이 활성화된 경우 \x02 string |
| UUID | \x05 바이너리, \x04 uuid 서브타입, 크기 = 16 |
| Array | \x04 배열 |
| Tuple | \x04 배열 |
| Named Tuple | \x03 도큐먼트 |
| Map | \x03 도큐먼트 |
| IPv4 | \x10 int32 |
| IPv6 | \x05 바이너리, \x00 바이너리 서브타입 |
입력 시에는 BSON 타입과 ClickHouse 타입 사이에 다음과 같은 매핑을 사용합니다:
| BSON Type | ClickHouse Type |
|---|---|
\x01 double | Float32/Float64 |
\x02 string | String/FixedString |
\x03 document | Map/Named Tuple |
\x04 array | Array/Tuple |
\x05 binary, \x00 binary subtype | String/FixedString/IPv6 |
\x05 binary, \x02 old binary subtype | String/FixedString |
\x05 binary, \x03 old uuid subtype | UUID |
\x05 binary, \x04 uuid subtype | UUID |
\x07 ObjectId | String/FixedString |
\x08 boolean | Bool |
\x09 datetime | DateTime64 |
\x0A null value | NULL |
\x0D JavaScript code | String/FixedString |
\x0E symbol | String/FixedString |
\x10 int32 | Int32/UInt32/Decimal32/IPv4/Enum8/Enum16 |
\x12 int64 | Int64/UInt64/Decimal64/DateTime64 |
다른 BSON 타입은 지원되지 않습니다. 또한 서로 다른 정수 타입 간 변환도 수행합니다.
예를 들어, BSON int32 값을 ClickHouse에 UInt8로 삽입할 수 있습니다.
Int128/UInt128/Int256/UInt256/Decimal128/Decimal256과 같은 큰 정수 및 소수 타입은 \x00 바이너리 서브타입을 가진 BSON Binary 값에서 파싱할 수 있습니다.
이 경우, 형식은 바이너리 데이터의 크기가 예상 값의 크기와 동일한지 검증합니다.
참고
이 형식은 Big-Endian 플랫폼에서는 제대로 동작하지 않습니다.
사용 예시
데이터 삽입
다음 데이터가 포함된 BSON 파일 football.bson을 사용합니다.
데이터를 삽입하십시오:
데이터 읽기
BSONEachRow 형식을 사용해 데이터를 읽습니다:
팁
BSON은 바이너리 형식이라 터미널에서 사람이 읽을 수 있는 형태로 표시되지 않습니다. BSON 파일로 출력하려면 INTO OUTFILE을 사용하십시오.
Format settings
| Setting | 설명 | 기본값 |
|---|---|---|
output_format_bson_string_as_string | String 컬럼에 대해 Binary 대신 BSON String 타입을 사용합니다. | false |
input_format_bson_skip_fields_with_unsupported_types_in_schema_inference | BSONEachRow 포맷에 대한 스키마 추론(schema inference) 시, 지원되지 않는 타입을 가진 컬럼을 건너뜀을 허용합니다. | false |