メインコンテンツへスキップ
ClickHouse は複数のバイナリ形式をサポートしており、これによりパフォーマンスと容量効率が向上します。バイナリ形式ではデータがバイナリで保存されるため、文字エンコーディングの面でも安全です。 ここではデモ用に some_data のテーブルデータを使用します。必要に応じて、ご自身の ClickHouse インスタンスで再現してみてください。

ClickHouseNative フォーマットでのエクスポート

ClickHouseノード間でデータをエクスポートおよびインポートする際に最も効率的なデータフォーマットは、Nativeフォーマットです。エクスポートはINTO OUTFILE句を使用して行います。
これにより、data.clickhouse ファイルがNative フォーマットで作成されます。

Native フォーマット からのインポート

データをインポートするには、小さなファイルや確認用途であれば、file() を使用できます:
file() 関数を使用する場合、ClickHouse Cloud では、ファイルがあるマシン上の clickhouse client でコマンドを実行する必要があります。別の方法として、clickhouse-local を使ってローカルでファイルを調査することもできます。
本番環境では、データのインポートに FROM INFILE を使用します。

Native フォーマットでの圧縮

COMPRESSION 句を使用すると、データをNative フォーマット (およびそのほかのほとんどのフォーマット) でエクスポートする際にも圧縮を有効にできます。
エクスポートにはLZ4圧縮を使用しました。データをインポートする際にも、これを指定する必要があります。

RowBinary へのエクスポート

サポートされている別のバイナリ形式として、RowBinary があります。これを使用すると、データをバイナリ表現の行としてインポートおよびエクスポートできます。
これにより、data.binary ファイルがバイナリ行形式で生成されます。

RowBinary ファイルの内容確認

このフォーマットでは自動スキーマ推論がサポートされていないため、読み込む前に内容を確認するには、スキーマを明示的に定義する必要があります。
RowBinaryWithNames の使用も検討してください。これを使うと、カラム一覧を含むヘッダー行も追加されます。RowBinaryWithNamesAndTypes を使うと、さらにカラムの型を含むヘッダー行も追加されます。

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

RowBinaryファイルからデータを読み込むには、FROM INFILE句を使用します。

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

バイナリファイル全体を読み取り、テーブル内の1つのフィールドに保存したいとします。 このような場合に使用できるのが、RawBLOB フォーマットです。このフォーマットは、単一カラムのテーブルでのみ直接使用できます。
画像ファイルを images テーブルに保存しましょう。
元のファイルサイズと一致する data フィールドの長さを確認できます:

RawBLOBデータのエクスポート

このフォーマットでは、INTO OUTFILE句を使ってデータをエクスポートすることもできます。
複数の値をエクスポートするとファイルが破損してしまうため、LIMIT 1 を使用する必要があった点に注意してください。

MessagePack

ClickHouse は、MsgPack を使用した MessagePack 形式のインポートとエクスポートをサポートしています。MessagePack フォーマットでエクスポートするには:
MessagePackファイル からデータをインポートするには、

Protocol Buffers

Protocol Buffers を扱うには、まず スキーマファイル を定義します。
このスキーマファイル (この場合は schema.proto) へのパスは、Protobufフォーマットのformat_schema設定オプションで指定します。
これにより、データは proto.bin ファイルに保存されます。ClickHouse では、ネストされたメッセージに加えて、Protobuf データのインポートもサポートしています。単一の Protocol Buffer メッセージを扱う場合は、ProtobufSingle の使用を検討してください (この場合、長さを示す区切り文字は省略されます) 。

Cap’n Proto

ClickHouse がサポートする、もう 1 つの一般的なバイナリシリアライゼーションフォーマットとして、Cap’n Proto があります。Protobuf 形式と同様に、この例でもスキーマファイル (schema.capnp) を定義する必要があります。
これで、CapnProtoフォーマットとこのスキーマを使用して、インポートとエクスポートができるようになりました。
Date カラムは、対応する型に合わせるために UInt32 にキャストする必要があった点に注意してください。

その他のフォーマット

ClickHouse は、さまざまな用途やプラットフォームに対応するため、テキスト形式とバイナリ形式の両方を含む多くのフォーマットをサポートしています。さらに多くのフォーマットやその扱い方については、以下の記事を参照してください。 あわせて、clickhouse-local もご覧ください。これは、ClickHouse server を起動せずにローカル/リモートファイルを扱える、持ち運び可能なフル機能ツールです。
最終更新日 2026年7月3日