跳至主要内容
跳至主要内容

输入和输出数据格式

ClickHouse 支持已知的大多数文本和二进制数据格式。这使得它可以轻松集成到几乎任何工作数据管道中,从而利用 ClickHouse 的优势。

输入格式

输入格式用于

  • 解析提供给 INSERT 语句的数据
  • 对基于文件的表(例如 FileURLHDFS)执行 SELECT 查询
  • 读取字典

选择合适的输入格式对于 ClickHouse 中的高效数据摄取至关重要。拥有超过 70 种支持的格式,选择性能最佳的选项可以显著影响插入速度、CPU 和内存使用率以及整体系统效率。为了帮助您浏览这些选择,我们对跨格式的摄取性能进行了基准测试,揭示了关键要点

  • Native 格式是最有效的输入格式,提供最佳压缩、最低资源使用率和最小的服务器端处理开销。
  • 压缩至关重要 - LZ4 以最小的 CPU 成本减少数据大小,而 ZSTD 以额外的 CPU 使用为代价提供更高的压缩率。
  • 预排序影响不大,因为 ClickHouse 已经可以高效地排序。
  • 批量处理显著提高效率 - 较大的批处理减少插入开销并提高吞吐量。

要深入了解结果和最佳实践,请阅读完整的 基准分析。要查看完整的测试结果,请探索 FastFormats 在线仪表板。

输出格式

支持输出的格式用于

  • 安排 SELECT 查询的结果
  • 对基于文件的表执行 INSERT 操作

格式概述

支持的格式是

格式输入输出
TabSeparated
TabSeparatedRaw
TabSeparatedWithNames
TabSeparatedWithNamesAndTypes
TabSeparatedRawWithNames
TabSeparatedRawWithNamesAndTypes
Template
TemplateIgnoreSpaces
CSV
CSVWithNames
CSVWithNamesAndTypes
CustomSeparated
CustomSeparatedWithNames
CustomSeparatedWithNamesAndTypes
SQLInsert
Vertical
JSON
JSONAsString
JSONAsObject
JSONStrings
JSONColumns
JSONColumnsWithMetadata
JSONCompact
JSONCompactStrings
JSONCompactColumns
JSONEachRow
PrettyJSONEachRow
JSONEachRowWithProgress
JSONStringsEachRow
JSONStringsEachRowWithProgress
JSONCompactEachRow
JSONCompactEachRowWithNames
JSONCompactEachRowWithNamesAndTypes
JSONCompactEachRowWithProgress
JSONCompactStringsEachRow
JSONCompactStringsEachRowWithNames
JSONCompactStringsEachRowWithNamesAndTypes
JSONCompactStringsEachRowWithProgress
JSONObjectEachRow
BSONEachRow
TSKV
Pretty
PrettyNoEscapes
PrettyMonoBlock
PrettyNoEscapesMonoBlock
PrettyCompact
PrettyCompactNoEscapes
PrettyCompactMonoBlock
PrettyCompactNoEscapesMonoBlock
PrettySpace
PrettySpaceNoEscapes
PrettySpaceMonoBlock
PrettySpaceNoEscapesMonoBlock
Prometheus
Protobuf
ProtobufSingle
ProtobufList
Avro
AvroConfluent
Parquet
ParquetMetadata
Arrow
ArrowStream
ORC
One
Npy
RowBinary
RowBinaryWithNames
RowBinaryWithNamesAndTypes
RowBinaryWithDefaults
Native
Buffers
Null
Hash
XML
CapnProto
LineAsString
LineAsStringWithNames
LineAsStringWithNamesAndTypes
Regexp
RawBLOB
MsgPack
MySQLDump
DWARF
Markdown
Form

您可以使用 ClickHouse 设置控制某些格式处理参数。有关更多信息,请阅读 设置 部分。

格式模式

通过设置 format_schema 设置来设置包含格式模式的文件名。在使用 Cap'n ProtoProtobuf 格式之一时,需要设置此设置。格式模式是该文件中的文件名和消息类型的名称的组合,用冒号分隔,例如 schemafile.proto:MessageType。如果该文件具有该格式的标准扩展名(例如,Protobuf.proto),则可以省略它,在这种情况下,格式模式如下所示:schemafile:MessageType

如果您通过 客户端 以交互模式输入或输出数据,则格式模式中指定的文件名可以包含绝对路径或相对于客户端当前目录的路径。如果您以 批处理模式 使用客户端,则出于安全原因,模式的路径必须是相对路径。

如果您通过 HTTP 接口 输入或输出数据,则格式模式中指定的文件名应位于服务器配置中 format_schema_path 中指定的目录中。

跳过错误

诸如 CSVTabSeparatedTSKVJSONEachRowTemplateCustomSeparatedProtobuf 之类的某些格式可以在发生解析错误时跳过损坏的行并继续从下一行的开头进行解析。请参阅 input_format_allow_errors_numinput_format_allow_errors_ratio 设置。限制

  • 如果发生解析错误,JSONEachRow 会跳过直到新行(或 EOF)的所有数据,因此必须用 \n 分隔行才能正确计数错误。
  • TemplateCustomSeparated 使用最后一个列之后的定界符和行之间的定界符来查找下一行的开头,因此仅当其中至少一个不为空时,跳过错误才有效。
    © . This site is unofficial and not affiliated with ClickHouse, Inc.