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ファイルからデータをインポートするには:
プロトコルバッファ
プロトコルバッファで作業するには、最初にスキーマファイルを定義する必要があります:
このスキーマファイルへのパス(私たちの例では schema.proto
)は、Protobuf形式の format_schema
設定オプションで設定されます:
これにより、proto.bin ファイルにデータが保存されます。ClickHouseは、Protobufデータのインポートやネストされたメッセージもサポートしています。単一のプロトコルバッファメッセージで作業するには、ProtobufSingleを使用することを検討してください(この場合、長さの区切りは省略されます)。
Cap’n Proto
ClickHouseがサポートする別の人気のあるバイナリシリアライズ形式は Cap’n Proto です。Protobuf
形式と同様に、私たちの例ではスキーマファイル(schema.capnp
)を定義する必要があります:
このスキーマを使用して、CapnProto形式でインポートおよびエクスポートできます:
対応する型に一致させるために、Date
カラムをUInt32
としてキャストする必要があることに注意してください。
その他の形式
ClickHouseは、さまざまなシナリオやプラットフォームをカバーするために、多くの形式(テキスト形式およびバイナリ形式)のサポートを追加しています。次の文書で、より多くの形式やそれらとの作業方法を探求してください:
- CSVおよびTSV形式
- Parquet
- JSON形式
- 正規表現とテンプレート
- ネイティブおよびバイナリ形式
- SQL形式
そして、clickhouse-local をもチェックしてください - ClickHouseサーバーを起動することなく、ローカル/リモートファイルで作業するための完全機能のポータブルツールです。