RowBinary
输入 | 输出 | 别名 |
---|---|---|
✔ | ✔ |
描述
RowBinary
格式以二进制格式逐行解析数据。行和值连续列出,没有分隔符。由于数据是二进制格式,因此 FORMAT RowBinary
后的分隔符严格指定如下
- 任意数量的空格
' '
(空格 - 代码0x20
)'\t'
(制表符 - 代码0x09
)'\f'
(换页符 - 代码0x0C
)
- 后跟正好一个换行符序列
- Windows 样式
"\r\n"
- 或 Unix 样式
'\n'
- Windows 样式
- 紧随其后的是二进制数据。
注意
此格式不如 Native 格式高效,因为它基于行。
对于以下数据类型,请务必注意:
- 整数 使用固定长度的小端表示。例如,
UInt64
使用 8 个字节。 - DateTime 表示为
UInt32
,其中包含 Unix 时间戳作为值。 - Date 表示为 UInt16 对象,其中包含自
1970-01-01
以来的天数作为值。 - String 表示为可变宽度整数 (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 | 允许在使用 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 |