Перейти к основному содержанию
Перейти к основному содержанию

RowBinary

ВходВыходПсевдоним

Описание

Формат RowBinary разбирает данные по строкам в двоичном виде. Строки и значения идут последовательно, без разделителей. Поскольку данные представлены в двоичном формате, разделитель после FORMAT RowBinary строго задан следующим образом:

  • Произвольное количество пробельных символов:
    • ' ' (пробел — код 0x20)
    • '\t' (табуляция — код 0x09)
    • '\f' (form feed — код 0x0C)
  • После чего следует ровно одна последовательность перевода строки:
    • в стиле Windows "\r\n"
    • или в стиле Unix '\n'
  • Сразу после этого идут двоичные данные.
Примечание

Этот формат менее эффективен, чем формат Native, поскольку он построчный.

Для следующих типов данных важно отметить, что:

  • Integers используют фиксированное представление в формате little-endian. Например, UInt64 использует 8 байт.
  • DateTime представляется как UInt32, содержащее в качестве значения Unix timestamp.
  • Date представляется как значение типа UInt16, которое содержит количество дней, прошедших с 1970-01-01.
  • String представляется как целое число переменной длины (varint) (беззнаковый LEB128), за которым следуют байты строки.
  • FixedString представляется просто как последовательность байт.
  • Arrays представляются как целое число переменной длины (varint) (беззнаковый LEB128), за которым следуют элементы массива по порядку.

Для поддержки NULL перед каждым значением типа Nullable добавляется дополнительный байт, содержащий 1 или 0.

  • Если 1, то значение — NULL, и этот байт интерпретируется как отдельное значение.
  • Если 0, значение после байта не является NULL.

Для сравнения форматов RowBinary и RawBlob см. раздел: Raw Formats Comparison

Пример использования

Параметры формата

Следующие настройки общие для всех форматов типа RowBinary.

SettingDescriptionDefault
format_binary_max_string_sizeМаксимально допустимый размер значения типа String в формате RowBinary.1GiB
output_format_binary_encode_types_in_binary_formatПозволяет записывать типы в заголовке с использованием binary encoding вместо строк с именами типов в формате вывода RowBinaryWithNamesAndTypes.false
input_format_binary_decode_types_in_binary_formatПозволяет читать типы в заголовке с использованием binary encoding вместо строк с именами типов в формате ввода RowBinaryWithNamesAndTypes.false
output_format_binary_write_json_as_stringПозволяет записывать значения типа данных JSON как строковые значения JSON (типа String) в формате вывода RowBinary.false
input_format_binary_read_json_as_stringПозволяет читать значения типа данных JSON как строковые значения JSON (типа String) в формате ввода RowBinary.false