メインコンテンツまでスキップ
メインコンテンツまでスキップ

入力データと出力データの形式

ClickHouseは、既知のテキストおよびバイナリデータ形式のほとんどをサポートしています。これにより、ClickHouseの利点を活かすためのほぼすべてのデータパイプラインへの容易な統合が可能になります。

入力形式

入力形式は次の目的で使用されます。

  • INSERT文に提供されたデータの解析
  • FileURL、またはHDFSなどのファイルバックテーブルからの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
Values
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
Null
XML
CapnProto
LineAsString
Regexp
RawBLOB
MsgPack
MySQLDump
DWARF
Markdown
Form

ClickHouseの設定を使用して、一部の形式処理パラメータを制御することができます。詳細については、Settingsセクションをお読みください。

TabSeparated

TabSeparatedを参照してください。

TabSeparatedRaw

TabSeparatedRawを参照してください。

TabSeparatedWithNames

TabSeparatedWithNamesを参照してください。

TabSeparatedWithNamesAndTypes

TabSeparatedWithNamesAndTypesを参照してください。

TabSeparatedRawWithNames

TabSeparatedRawWithNamesを参照してください。

TabSeparatedRawWithNamesAndTypes

TabSeparatedRawWithNamesAndTypesを参照してください。

Template

Templateを参照してください。

TemplateIgnoreSpaces

TemplateIgnoreSpacesを参照してください。

TSKV

TSKVを参照してください。

CSV

CSVを参照してください。

CSVWithNames

CSVWithNamesを参照してください。

CSVWithNamesAndTypes

CSVWithNamesAndTypesを参照してください。

CustomSeparated

CustomSeparatedを参照してください。

CustomSeparatedWithNames

CustomSeparatedWithNamesを参照してください。

CustomSeparatedWithNamesAndTypes

CustomSeparatedWithNamesAndTypesを参照してください。

SQLInsert

SQLInsertを参照してください。

JSON

JSONを参照してください。

JSONStrings

JSONStringsを参照してください。

JSONColumns

JSONColumnsを参照してください。

JSONColumnsWithMetadata

JSONColumnsWithMetadataを参照してください。

JSONAsString

JSONAsStringを参照してください。

JSONAsObject

JSONAsObjectを参照してください。

JSONCompact

JSONCompactを参照してください。

JSONCompactStrings

JSONCompactStringsを参照してください。

JSONCompactColumns

JSONCompactColumnsを参照してください。

JSONEachRow

JSONEachRowを参照してください。

PrettyJSONEachRow

PrettyJSONEachRowを参照してください。

JSONStringsEachRow

JSONStringsEachRowを参照してください。

JSONCompactEachRow

JSONCompactEachRowを参照してください。

JSONCompactStringsEachRow

JSONCompactStringsEachRowを参照してください。

JSONEachRowWithProgress

JSONEachRowWithProgressを参照してください。

JSONStringsEachRowWithProgress

JSONStringsEachRowWithProgressを参照してください。

JSONCompactEachRowWithNames

JSONCompactEachRowWithNamesを参照してください。

JSONCompactEachRowWithNamesAndTypes

JSONCompactEachRowWithNamesAndTypesを参照してください。

JSONCompactEachRowWithProgress

JSONEachRowWithProgressに似ていますが、JSONCompactEachRow形式のようにrowイベントをコンパクトな形式で出力します。

JSONCompactStringsEachRowWithNames

JSONCompactStringsEachRowWithNamesを参照してください。

JSONCompactStringsEachRowWithNamesAndTypes

JSONCompactStringsEachRowWithNamesAndTypesを参照してください。

JSONObjectEachRow

JSONObjectEachRowを参照してください。

JSON形式設定

JSON形式設定を参照してください。

BSONEachRow

BSONEachRowを参照してください。

Native

Nativeを参照してください。

Null

Nullを参照してください。

Pretty

Prettyを参照してください。

PrettyNoEscapes

PrettyNoEscapesを参照してください。

PrettyMonoBlock

PrettyMonoBlockを参照してください。

PrettyNoEscapesMonoBlock

PrettyNoEscapesMonoBlockを参照してください。

PrettyCompact

PrettyCompactを参照してください。

PrettyCompactNoEscapes

PrettyCompactNoEscapesを参照してください。

PrettyCompactMonoBlock

PrettyCompactMonoBlockを参照してください。

PrettyCompactNoEscapesMonoBlock

PrettyCompactNoEscapesMonoBlockを参照してください。

PrettySpace

PrettySpaceを参照してください。

PrettySpaceNoEscapes

PrettySpaceNoEscapesを参照してください。

PrettySpaceMonoBlock

PrettySpaceMonoBlockを参照してください。

PrettySpaceNoEscapesMonoBlock

PrettySpaceNoEscapesMonoBlockを参照してください。

RowBinary

RowBinaryを参照してください。

RowBinaryWithNames

RowBinaryWithNamesを参照してください。

RowBinaryWithNamesAndTypes

RowBinaryWithNamesAndTypesを参照してください。

RowBinaryWithDefaults

RowBinaryWithDefaultsを参照してください。

Values

Valuesを参照してください。

Vertical

Verticalを参照してください。

XML

XMLを参照してください。

CapnProto

CapnProtoを参照してください。

Prometheus

Prometheusを参照してください。

Protobuf

Protobufを参照してください。

ProtobufSingle

ProtobufSingleを参照してください。

ProtobufList

ProtobufListを参照してください。

Avro

Avroを参照してください。

AvroConfluent

AvroConfluentを参照してください。

Parquet

Parquetを参照してください。

ParquetMetadata

ParquetMetadataを参照してください。

Arrow

Arrowを参照してください。

ArrowStream

ArrowStreamを参照してください。

ORC

ORCを参照してください。

One

Oneを参照してください。

Npy

Npyを参照してください。

LineAsString

次を参照してください:

Regexp

Regexpを参照してください。

RawBLOB

RawBLOBを参照してください。

Markdown

Markdownを参照してください。

MsgPack

MsgPackを参照してください。

MySQLDump

MySQLDumpを参照してください。

DWARF

Dwarfを参照してください。

Form

Formを参照してください。

形式スキーマ

形式スキーマを含むファイル名は、format_schema設定によって設定されます。 この設定を設定する必要があるのは、Cap'n ProtoおよびProtobuf形式の1つが使用される場合です。 形式スキーマは、ファイル名とこのファイル内のメッセージ型の名前の組み合わせで、コロンで区切られます(例:schemafile.proto:MessageType)。 ファイルが形式に対して標準の拡張子を持っている場合(例えば、Protobufの場合は.proto)、省略可能であり、この場合、形式スキーマはschemafile:MessageTypeのようになります。

clientを介して対話モードでデータを入力または出力する場合、形式スキーマで指定されたファイル名には、絶対パスまたはクライアントの現在のディレクトリに対する相対パスを含めることができます。 バッチモードでクライアントを使用する場合、スキーマへのパスは、セキュリティ上の理由から相対的である必要があります。

HTTPインターフェースを介してデータを入力または出力する場合、形式スキーマで指定されたファイル名は、サーバー構成のformat_schema_pathで指定されたディレクトリに存在する必要があります。

エラーをスキップ

CSVTabSeparatedTSKVJSONEachRowTemplateCustomSeparated、およびProtobufなどの一部の形式は、解析エラーが発生した場合に壊れた行をスキップし、次の行の先頭から解析を続行できます。 input_format_allow_errors_numおよびinput_format_allow_errors_ratioの設定を参照してください。 制約:

  • 解析エラーが発生した場合、JSONEachRowは新しい行(またはEOF)までのすべてのデータをスキップするため、行は正しくエラーをカウントするために\nで区切る必要があります。
  • TemplateCustomSeparatedは、次の行の先頭を見つけるために、最後のカラム後のデリミタと行間のデリミタを使用するため、エラーをスキップするのは、少なくとも一方が空でない場合のみ機能します。