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

ClickHouseにおけるネイティブおよびバイナリ形式の使用

ClickHouseは複数のバイナリ形式をサポートしており、これによりパフォーマンスとスペース効率が向上します。バイナリ形式は、データがバイナリ形式で保存されるため、文字エンコーディングにおいても安全です。

デモンストレーションのために、some_data テーブルデータ を使用しますので、あなたのClickHouseインスタンスで再現してみてください。

ネイティブClickHouse形式でのエクスポート

ClickHouseノード間でデータをエクスポートおよびインポートするための最も効率的なデータ形式は Native 形式です。エクスポートは INTO OUTFILE 句を使用して行います:

これにより、ネイティブ形式の data.clickhouse ファイルが作成されます。

ネイティブ形式からのインポート

データをインポートするには、小さなファイルや探索目的の場合、file() を使用できます:

ヒント

file() 関数を使用する場合、ClickHouse Cloud では、ファイルが存在するマシンの clickhouse client でコマンドを実行する必要があります。別のオプションは、clickhouse-local を使用してローカルでファイルを探索することです。

本番環境では、データをインポートするために FROM INFILE を使用します:

ネイティブ形式の圧縮

ネイティブ形式(およびほとんどの他の形式)にデータをエクスポートする際に圧縮を有効にすることもできます。COMPRESSION 句を使用します:

エクスポートにはLZ4圧縮を使用しました。データをインポートする際にもこれを指定する必要があります:

RowBinaryへのエクスポート

別のサポートされているバイナリ形式は RowBinary で、バイナリ表現の行にデータをインポートおよびエクスポートすることができます:

これにより、バイナリ行形式の data.binary ファイルが生成されます。

RowBinaryファイルの探索

この形式では自動的なスキーマ推論はサポートされていないため、ロードする前にスキーマを明示的に定義する必要があります:

RowBinaryWithNames の使用を検討してください。これはカラムリストを含むヘッダー行も追加します。RowBinaryWithNamesAndTypes はカラムの型を含む追加のヘッダー行も追加します。

RowBinaryファイルからのインポート

RowBinaryファイルからデータをロードするには、FROM INFILE 句を使用できます:

RawBLOBを使用した単一バイナリ値のインポート

例えば、完全なバイナリファイルを読み込み、テーブルのフィールドに保存したいとします。 この場合、RawBLOB形式を使用できます。この形式は、単一列のテーブルと直接使用することができます:

画像ファイルを images テーブルに保存しましょう:

dataフィールドの長さをチェックすると、元のファイルサイズと等しくなります:

RawBLOBデータのエクスポート

この形式は、INTO OUTFILE 句を使用してデータをエクスポートするためにも使用できます:

単一の値以上をエクスポートするとファイルが壊れるため、LIMIT 1 を使用する必要がありました。

MessagePack

ClickHouseは、MessagePack に対するインポートおよびエクスポートを MsgPack を使用してサポートしています。MessagePack形式にエクスポートするには:

MessagePackファイルからデータをインポートするには:

プロトコルバッファ

Not supported in ClickHouse Cloud

プロトコルバッファで作業するには、最初にスキーマファイルを定義する必要があります:

このスキーマファイルへのパス(私たちの例では schema.proto)は、Protobuf形式の format_schema 設定オプションで設定されます:

これにより、proto.bin ファイルにデータが保存されます。ClickHouseは、Protobufデータのインポートやネストされたメッセージもサポートしています。単一のプロトコルバッファメッセージで作業するには、ProtobufSingleを使用することを検討してください(この場合、長さの区切りは省略されます)。

Cap’n Proto

Not supported in ClickHouse Cloud

ClickHouseがサポートする別の人気のあるバイナリシリアライズ形式は Cap’n Proto です。Protobuf形式と同様に、私たちの例ではスキーマファイル(schema.capnp)を定義する必要があります:

このスキーマを使用して、CapnProto形式でインポートおよびエクスポートできます:

対応する型に一致させるために、DateカラムをUInt32としてキャストする必要があることに注意してください。

その他の形式

ClickHouseは、さまざまなシナリオやプラットフォームをカバーするために、多くの形式(テキスト形式およびバイナリ形式)のサポートを追加しています。次の文書で、より多くの形式やそれらとの作業方法を探求してください:

そして、clickhouse-local をもチェックしてください - ClickHouseサーバーを起動することなく、ローカル/リモートファイルで作業するための完全機能のポータブルツールです。