メインコンテンツへスキップ
Parquetは、データを列指向で格納するための効率的なファイルフォーマットです。 ClickHouseは、Parquetファイルの読み取りと書き込みの両方をサポートしています。
クエリでファイルパスを参照する場合、ClickHouseがどこから読み取ろうとするかは、使用しているClickHouseのバリアントによって異なります。clickhouse-local を使用している場合は、ClickHouse Localを起動した場所からの相対パスで読み取ります。 clickhouse client 経由でClickHouse ServerまたはClickHouse Cloudを使用している場合は、サーバー上の /var/lib/clickhouse/user_files/ ディレクトリからの相対パスで読み取ります。

Parquet からのインポート

データを読み込む前に、file() 関数を使って、サンプルの Parquet ファイル の構造を確認できます。
2 番目の引数として Parquet を指定しているため、ClickHouse はファイルのフォーマットを認識できます。これにより、型付きのカラムが表示されます。
SQL の機能をフル活用して、実際にデータをインポートする前にファイルの内容を確認することもできます。
file()INFILE/OUTFILE では、フォーマットを明示的に指定しなくても構いません。 その場合、ClickHouse がファイル拡張子に基づいてフォーマットを自動的に判別します。

既存のテーブルへのインポート

Parquetデータのインポート先となるテーブルを作成しましょう。
これで、FROM INFILE 句を使ってデータをインポートできます。
ClickHouse が、Parquet の文字列 (date カラム) を自動的に Date 型へ変換していることに注目してください。これは、ClickHouse がターゲットテーブルの型に基づいて自動的に型変換を行うためです。

ローカルファイルをリモートサーバーに挿入する

ローカルのParquetファイルをリモートのClickHouse serverに挿入するには、以下のようにファイルの内容を clickhouse-client にパイプします。

Parquetファイルから新しいテーブルを作成する

ClickHouseはParquetファイルのスキーマを読み取れるため、その場でテーブルを作成できます。
これにより、指定したParquetファイルからテーブルを自動的に作成し、データを投入できます。
デフォルトでは、ClickHouse はカラム名、型、値を厳密にチェックします。ただし、インポート時には、存在しないカラムやサポートされていない値をスキップできる場合もあります。これは Parquet の設定 で制御できます。

Parquetフォーマットへのエクスポート

ClickHouse Cloud で INTO OUTFILE を使用する場合は、ファイルの書き込み先となるマシンで clickhouse client のコマンドを実行する必要があります。
任意のテーブルまたはクエリ結果を Parquet ファイルにエクスポートするには、INTO OUTFILE 句を使用します。
これにより、作業ディレクトリに export.parquet ファイルが作成されます。

ClickHouse と Parquet のデータ型

ClickHouse と Parquet のデータ型はほぼ同じですが、若干の違いがあります。たとえば、ClickHouse は DateTime 型を Parquet の int64 としてエクスポートします。これを再度 ClickHouse にインポートすると、数値として表示されます (time.parquet file) :
この場合、型変換を使用できます:

関連記事

ClickHouse は、さまざまなユースケースやプラットフォームに対応するため、テキスト形式とバイナリ形式の両方を含む、多数のフォーマットをサポートしています。利用可能なフォーマットやその活用方法については、以下の記事もご覧ください。 あわせて、clickhouse-local もご確認ください。これは、ClickHouse server を必要とせず、ローカル/リモートファイルを扱える移植性の高いフル機能ツールです。
最終更新日 2026年7月2日