본문으로 바로가기
본문으로 바로가기

RowBinary

입력출력별칭

설명

RowBinary 포맷은 데이터를 바이너리 형식으로 행 단위로 파싱합니다.
행과 값은 구분자 없이 연속적으로 나열됩니다.
데이터가 바이너리 포맷이기 때문에 FORMAT RowBinary 뒤의 구분자는 다음과 같이 엄격하게 지정됩니다:

  • 임의 개수의 공백 문자:
    • ' ' (space - 코드 0x20)
    • '\t' (tab - 코드 0x09)
    • '\f' (form feed - 코드 0x0C)
  • 이어서 정확히 한 번의 새 줄(new line) 시퀀스:
    • Windows 스타일 "\r\n"
    • 또는 Unix 스타일 '\n'
  • 그리고 바로 이어서 바이너리 데이터가 옵니다.
참고

이 포맷은 행 기반 포맷이기 때문에 Native 포맷보다 효율성이 떨어집니다.

다음 데이터 타입에 대해서는 다음 사항을 유의해야 합니다:

  • Integers는 고정 길이 리틀 엔디언 표현을 사용합니다. 예를 들어 UInt64는 8바이트를 사용합니다.
  • DateTime은 값으로 Unix 타임스탬프를 담고 있는 UInt32로 표현됩니다.
  • Date1970-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_sizeRowBinary 포맷에서 String 값에 허용되는 최대 크기입니다.1GiB
output_format_binary_encode_types_in_binary_formatRowBinaryWithNamesAndTypes 출력 포맷에서 타입 이름이 포함된 문자열 대신, 헤더에 있는 타입을 binary encoding으로 기록하도록 합니다.false
input_format_binary_decode_types_in_binary_formatRowBinaryWithNamesAndTypes 입력 포맷에서 타입 이름이 포함된 문자열 대신, 헤더에 있는 타입을 binary encoding으로 읽도록 합니다.false
output_format_binary_write_json_as_stringRowBinary 출력 포맷에서 JSON 데이터 타입의 값을 JSON String 값으로 기록하도록 합니다.false
input_format_binary_read_json_as_stringRowBinary 입력 포맷에서 JSON 데이터 타입의 값을 JSON String 값으로 읽도록 합니다.false