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

RowBinary

输入输出别名

描述

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

  • 任意数量的空格
    • ' ' (空格 - 代码 0x20)
    • '\t' (制表符 - 代码 0x09)
    • '\f' (换页符 - 代码 0x0C)
  • 后跟正好一个换行符序列
    • Windows 样式 "\r\n"
    • 或 Unix 样式 '\n'
  • 紧随其后的是二进制数据。
注意

此格式不如 Native 格式高效,因为它基于行。

对于以下数据类型,请务必注意:

  • 整数 使用固定长度的小端表示。例如,UInt64 使用 8 个字节。
  • DateTime 表示为 UInt32,其中包含 Unix 时间戳作为值。
  • Date 表示为 UInt16 对象,其中包含自 1970-01-01 以来的天数作为值。
  • String 表示为可变宽度整数 (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允许在使用 RowBinaryWithNamesAndTypes 输出格式时,使用 二进制编码 而不是带有类型名称的字符串在标头中写入类型。false
input_format_binary_encode_types_in_binary_format允许在使用 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