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

入力および出力フォーマット

入出力データのフォーマット

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 の設定を使用して、一部のフォーマット処理パラメータを制御できます。詳細については、設定 セクションをお読みください。

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 のいずれかのフォーマットが使用される場合に設定する必要があります。フォーマットスキーマは、ファイル名とこのファイル内のメッセージタイプの名前の組み合わせであり、コロンで区切られています。例えば、schemafile.proto:MessageType のようになります。ファイルがそのフォーマットの標準拡張子(例えば、Protobuf の場合は .proto)を持っている場合、それを省略することができ、この場合、フォーマットスキーマは schemafile:MessageType のようになります。

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

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

エラーをスキップする

CSVTabSeparatedTSKVJSONEachRowTemplateCustomSeparated および Protobuf のようないくつかのフォーマットは、解析エラーが発生した場合に壊れた行をスキップし、次の行の最初から解析を続行することができます。設定 input_format_allow_errors_num および input_format_allow_errors_ratio を参照してください。 制限:

  • 解析エラーが発生した場合、JSONEachRow は新しい行(または EOF)までのすべてのデータをスキップするため、行は正しくエラーをカウントするために \n で区切られている必要があります。
  • Template および CustomSeparated は次の行の開始を見つけるために、最後のカラムの後および行間の区切り文字を使用しますので、これらのうち少なくとも一つが空でない場合にのみエラーのスキップが機能します。