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