RowBinary
| Вход | Выход | Псевдоним |
|---|---|---|
| ✔ | ✔ |
Описание
Формат RowBinary разбирает данные по строкам в двоичном виде.
Строки и значения идут последовательно, без разделителей.
Поскольку данные представлены в двоичном формате, разделитель после FORMAT RowBinary строго задан следующим образом:
- Произвольное количество пробельных символов:
' '(пробел — код0x20)'\t'(табуляция — код0x09)'\f'(form feed — код0x0C)
- После чего следует ровно одна последовательность перевода строки:
- в стиле Windows
"\r\n" - или в стиле Unix
'\n'
- в стиле Windows
- Сразу после этого идут двоичные данные.
Примечание
Этот формат менее эффективен, чем формат 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.
| Setting | Description | Default |
|---|---|---|
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 |