入出力データのフォーマット
ClickHouse は、知られているほとんどのテキストおよびバイナリデータフォーマットをサポートしています。これにより、ClickHouse の利点を活かすために、ほぼすべての作業データパイプラインへの統合が容易になります。
入力フォーマット
入力フォーマットは次の目的で使用されます:
INSERT
文に提供されるデータの解析File
、URL
、またはHDFS
のようなファイルバックテーブルからのSELECT
クエリの実行- 辞書の読み込み
適切な入力フォーマットを選択することは、ClickHouse における効率的なデータ取り込みにとって重要です。70 以上のサポートされているフォーマットの中から、最もパフォーマンスの高いオプションを選択することは、挿入速度、CPU とメモリ使用量、全体的なシステム効率に大きな影響を与える可能性があります。これらの選択肢をナビゲートするために、私たちはフォーマット間の取り込みパフォーマンスをベンチマークし、重要なポイントを明らかにしました:
- Native フォーマットは最も効率的な入力フォーマットです。最高の圧縮、最も低いリソース使用、および最小のサーバーサイド処理オーバーヘッドを提供します。
- 圧縮は重要です - LZ4 は最小限の CPU コストでデータサイズを削減し、ZSTD は追加の CPU 使用量の代わりにより高い圧縮を提供します。
- 事前ソートは中程度の影響を及ぼします - ClickHouse はすでに効率的にソートします。
- バッチ処理は効率を大幅に改善します - 大きなバッチは挿入オーバーヘッドを削減し、スループットを向上させます。
結果とベストプラクティスの詳細については、完全な ベンチマーク分析 をお読みください。完全なテスト結果については、FastFormats のオンラインダッシュボードを探索してください。
出力フォーマット
出力にサポートされているフォーマットは次の目的で使用されます:
SELECT
クエリの結果を整理する- ファイルバックテーブルへの
INSERT
操作を実行する
フォーマットの概観
サポートされているフォーマットは以下の通りです:
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 で指定されたディレクトリにある必要があります。
エラーをスキップする
CSV
、TabSeparated
、TSKV
、JSONEachRow
、Template
、CustomSeparated
および Protobuf
のようないくつかのフォーマットは、解析エラーが発生した場合に壊れた行をスキップし、次の行の最初から解析を続行することができます。設定 input_format_allow_errors_num および input_format_allow_errors_ratio を参照してください。
制限:
- 解析エラーが発生した場合、
JSONEachRow
は新しい行(または EOF)までのすべてのデータをスキップするため、行は正しくエラーをカウントするために\n
で区切られている必要があります。 Template
およびCustomSeparated
は次の行の開始を見つけるために、最後のカラムの後および行間の区切り文字を使用しますので、これらのうち少なくとも一つが空でない場合にのみエラーのスキップが機能します。