RowBinary
Input | Output | Alias |
---|---|---|
✔ | ✔ |
Description
RowBinary
格式以二进制格式逐行解析数据。
行和值连续列出,没有分隔符。
由于数据是以二进制格式存储,因此在 FORMAT RowBinary
之后的分隔符严格指定如下:
- 任何数量的空白字符:
' '
(空格 - 代码0x20
)'\t'
(制表符 - 代码0x09
)'\f'
(换页 - 代码0x0C
)
- 紧接着是确切的一个换行序列:
- Windows 样式
"\r\n"
- 或 Unix 样式
'\n'
- Windows 样式
- 紧接着是二进制数据。
备注
这种格式的效率低于 Native 格式,因为它是基于行的。
对于以下数据类型,需要注意的是:
- Integers 使用固定长度的小端表示法。例如,
UInt64
使用 8 字节。 - DateTime 表示为包含 Unix 时间戳的
UInt32
。 - Date 表示为一个 UInt16 对象,包含自
1970-01-01
以来的天数。 - String 表示为一个可变长度的整数 (varint) (无符号
LEB128
),后跟字符串的字节。 - FixedString 则简单表示为字节序列。
- Arrays 表示为一个可变长度的整数 (varint) (无符号 LEB128),后跟数组的连续元素。
对于 NULL 支持,每个 Nullable 值之前添加一个包含 1
或 0
的额外字节。
- 如果是
1
,则该值为NULL
,而这个字节被解释为一个独立的值。 - 如果是
0
,则这个字节后的值不是NULL
。
有关 RowBinary
格式与 RawBlob
格式的比较,请参见:Raw Formats Comparison
Example usage
Format settings
以下设置适用于所有 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 | 允许在 RowBinary 输出格式中将 JSON 数据类型的值作为 JSON String 值写入。 | false |
input_format_binary_read_json_as_string | 允许在 RowBinary 输入格式中将 JSON 数据类型的值作为 JSON String 值读取。 | false |