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

RowBinary

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

Описание

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

  • Любое количество пробелов:
    • ' ' (пробел - код 0x20)
    • '\t' (табуляция - код 0x09)
    • '\f' (разделитель страницы - код 0x0C)
  • За которым следует ровно одна новая строка:
    • В стиле Windows "\r\n"
    • или в стиле Unix '\n'
  • Сразу за этим следует бинарные данные.
примечание

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

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

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

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

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

Для сравнения формата RowBinary и формата RawBlob см. Сравнение сырьевых форматов

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

Настройки формата

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

НастройкаОписаниеПо умолчанию
format_binary_max_string_sizeМаксимально допустимый размер для String в формате RowBinary.1GiB
output_format_binary_encode_types_in_binary_formatПозволяет записывать типы в заголовке, используя бинарное кодирование, вместо строк с названиями типов в формате вывода RowBinaryWithNamesAndTypes.false
input_format_binary_decode_types_in_binary_formatПозволяет читать типы в заголовке, используя бинарное кодирование, вместо строк с названиями типов в формате ввода 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