RowBinary
输入 | 输出 | 别名 |
---|---|---|
✔ | ✔ |
描述
RowBinary
格式以二进制格式按行解析数据。
行和数值依次列出,没有分隔符。
由于数据是以二进制格式存储,FORMAT RowBinary
后的分隔符严格规定如下:
- 任意数量的空白字符:
' '
(空格 - 代码0x20
)'\t'
(制表符 - 代码0x09
)'\f'
(换页符 - 代码0x0C
)
- 紧接着是恰好一个换行序列:
- Windows 风格
"\r\n"
- 或 Unix 风格
'\n'
- Windows 风格
- 紧接着是二进制数据。
备注
由于是基于行的,此格式的效率低于 Native 格式。
对于以下数据类型,需要注意:
- 整数 使用固定长度的小端表示。例如,
UInt64
使用 8 个字节。 - 日期时间 以
UInt32
表示,其中包含 Unix 时间戳的值。 - 日期 被表示为一个包含自
1970-01-01
以来的天数的 UInt16 对象。 - 字符串 被表示为一个可变宽度整数(varint)(无符号的
LEB128
),后面跟着字符串的字节。 - FixedString 简单地表示为一系列字节。
- 数组 被表示为一个可变宽度整数(varint)(无符号的 LEB128),后面跟着数组的连续元素。
为了支持 NULL,在每个 Nullable 值之前添加一个包含 1
或 0
的额外字节。
- 如果是
1
,则该值为NULL
,并且该字节被解释为一个单独的值。 - 如果是
0
,则该字节后面的值不是NULL
。
有关 RowBinary
格式和 RawBlob
格式的比较,请参见:原始格式比较
示例用法
格式设置
以下设置适用于所有 RowBinary
类型格式。
设置 | 描述 | 默认值 |
---|---|---|
format_binary_max_string_size | 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 |