输入格式
- 解析提供给
INSERT语句的数据 - 从
File、URL或HDFS等以文件为后端的表执行SELECT查询 - 读取字典
- Native 格式是效率最高的输入格式,具备最佳压缩效果、最低 资源占用,以及最小的服务端处理开销。
- 压缩至关重要 - LZ4 能以极低的 CPU 代价减小数据体积,而 ZSTD 则能提供更高的压缩率,但 会增加 CPU 使用。
- 预排序的影响较为有限,因为 ClickHouse 本身已经能够高效完成排序。
- 批处理可显著提升效率 - 更大的批次可减少插入开销并提高吞吐量。
输出格式
- 格式化
SELECT查询结果 - 对以文件为后端的表执行
INSERT操作
格式概述
格式 schema
format_schema 指定。
使用 Cap'n Proto 和 Protobuf 这两种格式之一时,必须设置此项。
格式 schema 由文件名和该文件中的消息类型名称组成,二者以冒号分隔,
例如 schemafile.proto:MessageType。
如果文件使用该格式的标准扩展名 (例如 Protobuf 的 .proto) ,
则可以省略扩展名,此时格式 schema 形如 schemafile:MessageType。
如果你通过处于交互模式的客户端输入或输出数据,则格式 schema 中指定的文件名
可以包含绝对路径,或相对于客户端当前目录的路径。
如果你在批次模式下使用客户端,出于安全原因,schema 的路径必须是相对路径。
如果你通过 HTTP 接口 输入或输出数据,则格式 schema 中指定的文件名
应位于服务器配置中 format_schema_path
指定的目录下。
跳过错误
CSV、TabSeparated、TSKV、JSONEachRow、Template、CustomSeparated 和 Protobuf) 在发生解析错误时,可以跳过损坏的行,并从下一行的开头继续解析。请参阅设置 input_format_allow_errors_num 和
input_format_allow_errors_ratio。
限制:
- 发生解析错误时,
JSONEachRow会跳过直到换行符 (或 EOF) 之前的所有数据,因此各行必须以\n分隔,才能正确统计错误数。 Template和CustomSeparated通过最后一列后的分隔符以及行间分隔符来定位下一行的开头,因此只有当其中至少一个非空时,才支持跳过错误。