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 表示为简单的字节序列。
- Array 表示为可变宽度整数(varint,使用无符号 LEB128 编码),后面跟数组的各个元素。
对于 NULL 支持,每个 Nullable 值前会额外增加一个包含 1 或 0 的字节。
- 如果为
1,则该值为NULL,并且这个字节本身被解释为一个独立的值。 - 如果为
0,则该字节后面的值不是NULL。
关于 RowBinary 格式与 RawBlob 格式的对比,请参阅:原始格式比较
使用示例
格式设置
以下设置适用于所有 RowBinary 类型的格式。
| Setting | Description | Default |
|---|---|---|
format_binary_max_string_size | RowBinary 格式中 String 类型允许的最大大小。 | 1GiB |
output_format_binary_encode_types_in_binary_format | 允许在 RowBinaryWithNamesAndTypes 输出格式的头部使用 binary encoding 编码并写入类型信息,而不是使用带有类型名称的字符串。 | false |
input_format_binary_decode_types_in_binary_format | 允许在 RowBinaryWithNamesAndTypes 输入格式的头部使用 binary encoding 解码并读取类型信息,而不是使用带有类型名称的字符串。 | 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 |