跳到主要内容
跳到主要内容

RowBinary

InputOutputAlias

Description

RowBinary 格式以二进制格式逐行解析数据。 行和值连续列出,没有分隔符。 由于数据是以二进制格式存储,因此在 FORMAT RowBinary 之后的分隔符严格指定如下:

  • 任何数量的空白字符:
    • ' ' (空格 - 代码 0x20)
    • '\t' (制表符 - 代码 0x09)
    • '\f' (换页 - 代码 0x0C)
  • 紧接着是确切的一个换行序列:
    • Windows 样式 "\r\n"
    • 或 Unix 样式 '\n'
  • 紧接着是二进制数据。
备注

这种格式的效率低于 Native 格式,因为它是基于行的。

对于以下数据类型,需要注意的是:

  • Integers 使用固定长度的小端表示法。例如,UInt64 使用 8 字节。
  • DateTime 表示为包含 Unix 时间戳的 UInt32
  • Date 表示为一个 UInt16 对象,包含自 1970-01-01 以来的天数。
  • String 表示为一个可变长度的整数 (varint) (无符号 LEB128),后跟字符串的字节。
  • FixedString 则简单表示为字节序列。
  • Arrays 表示为一个可变长度的整数 (varint) (无符号 LEB128),后跟数组的连续元素。

对于 NULL 支持,每个 Nullable 值之前添加一个包含 10 的额外字节。

  • 如果是 1,则该值为 NULL,而这个字节被解释为一个独立的值。
  • 如果是 0,则这个字节后的值不是 NULL

有关 RowBinary 格式与 RawBlob 格式的比较,请参见:Raw Formats Comparison

Example usage

Format settings

以下设置适用于所有 RowBinary 类型格式。

设置描述默认值
format_binary_max_string_sizeRowBinary 格式中字符串的最大允许大小。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允许在 RowBinary 输出格式中将 JSON 数据类型的值作为 JSON String 值写入。false
input_format_binary_read_json_as_string允许在 RowBinary 输入格式中将 JSON 数据类型的值作为 JSON String 值读取。false