RowBinary
| 입력 | 출력 | 별칭 |
|---|---|---|
| ✔ | ✔ |
설명
RowBinary 포맷은 데이터를 바이너리 형식으로 행 단위로 파싱합니다.
행과 값은 구분자 없이 연속적으로 나열됩니다.
데이터가 바이너리 포맷이기 때문에 FORMAT RowBinary 뒤의 구분자는 다음과 같이 엄격하게 지정됩니다:
- 임의 개수의 공백 문자:
' '(space - 코드0x20)'\t'(tab - 코드0x09)'\f'(form feed - 코드0x0C)
- 이어서 정확히 한 번의 새 줄(new line) 시퀀스:
- Windows 스타일
"\r\n" - 또는 Unix 스타일
'\n'
- Windows 스타일
- 그리고 바로 이어서 바이너리 데이터가 옵니다.
참고
이 포맷은 행 기반 포맷이기 때문에 Native 포맷보다 효율성이 떨어집니다.
다음 데이터 타입에 대해서는 다음 사항을 유의해야 합니다:
- Integers는 고정 길이 리틀 엔디언 표현을 사용합니다. 예를 들어
UInt64는 8바이트를 사용합니다. - DateTime은 값으로 Unix 타임스탬프를 담고 있는
UInt32로 표현됩니다. - Date는
1970-01-01이후 경과 일수를 값으로 담고 있는UInt16객체로 표현됩니다. - String은 가변 길이 정수(varint) (부호 없는
LEB128)로 길이를 표현하고, 그 뒤에 문자열 바이트들이 따라옵니다. - FixedString은 단순히 바이트 시퀀스로 표현됩니다.
- Arrays는 가변 길이 정수(varint) (부호 없는 LEB128)로 길이를 표현하고, 그 뒤에 배열의 요소들이 순차적으로 따라옵니다.
NULL 지원을 위해 각 Nullable 값 앞에는 1 또는 0을 담은 추가 바이트가 붙습니다.
- 값이
1이면 해당 값은NULL이며, 이 바이트는 별도의 값으로 해석됩니다. - 값이
0이면 이 바이트 뒤의 값은NULL이 아닙니다.
RowBinary 포맷과 RawBlob 포맷의 비교는 다음을 참고하십시오: Raw 포맷 비교
사용 예
형식 설정
다음 설정은 모든 RowBinary 유형 포맷에 공통적으로 적용됩니다.
| 설정 | 설명 | 기본값 |
|---|---|---|
format_binary_max_string_size | RowBinary 포맷에서 String 값에 허용되는 최대 크기입니다. | 1GiB |
output_format_binary_encode_types_in_binary_format | RowBinaryWithNamesAndTypes 출력 포맷에서 타입 이름이 포함된 문자열 대신, 헤더에 있는 타입을 binary encoding으로 기록하도록 합니다. | false |
input_format_binary_decode_types_in_binary_format | RowBinaryWithNamesAndTypes 입력 포맷에서 타입 이름이 포함된 문자열 대신, 헤더에 있는 타입을 binary encoding으로 읽도록 합니다. | false |
output_format_binary_write_json_as_string | RowBinary 출력 포맷에서 JSON 데이터 타입의 값을 JSON String 값으로 기록하도록 합니다. | false |
input_format_binary_read_json_as_string | RowBinary 입력 포맷에서 JSON 데이터 타입의 값을 JSON String 값으로 읽도록 합니다. | false |