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

RowBinary

输入输出别名

描述

RowBinary 格式以二进制格式按行解析数据。 行和数值依次列出,没有分隔符。 由于数据是以二进制格式存储,FORMAT RowBinary 后的分隔符严格规定如下:

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

由于是基于行的,此格式的效率低于 Native 格式。

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

  • 整数 使用固定长度的小端表示。例如,UInt64 使用 8 个字节。
  • 日期时间UInt32 表示,其中包含 Unix 时间戳的值。
  • 日期 被表示为一个包含自 1970-01-01 以来的天数的 UInt16 对象。
  • 字符串 被表示为一个可变宽度整数(varint)(无符号的 LEB128),后面跟着字符串的字节。
  • FixedString 简单地表示为一系列字节。
  • 数组 被表示为一个可变宽度整数(varint)(无符号的 LEB128),后面跟着数组的连续元素。

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

  • 如果是 1,则该值为 NULL,并且该字节被解释为一个单独的值。
  • 如果是 0,则该字节后面的值不是 NULL

有关 RowBinary 格式和 RawBlob 格式的比较,请参见:原始格式比较

示例用法

格式设置

以下设置适用于所有 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允许将 JSON 数据类型的值作为 JSON String 值写入 RowBinary 输出格式。false
input_format_binary_read_json_as_string允许将 JSON 数据类型的值作为 JSON String 值读取到 RowBinary 输入格式中。false