メインコンテンツへスキップ
このガイドでは、Snowflake から ClickHouse へデータを移行する方法を説明します。
Snowflake から ClickHouse へデータを移行するには、 転送用の中間ストレージとして S3 などのオブジェクトストアを使用する必要があります。移行プロセスでは、 Snowflake の COPY INTO コマンドと ClickHouse の INSERT INTO SELECT も利用します。
1

Snowflake からデータをエクスポートする

Snowflake からデータをエクスポートするには、上図のように外部ステージを使用する必要があります。以下のスキーマを持つ Snowflake テーブルをエクスポートするとします。
このテーブルのデータを ClickHouse データベースに移行するには、まずデータを外部ステージにコピーする必要があります。データのコピー時には、中間フォーマットとして Parquet を推奨します。型情報を保持でき、精度を維持し、圧縮効率が高く、分析で一般的なネスト構造もネイティブにサポートしているためです。以下の例では、Parquet と必要なファイルオプションを表す名前付きファイルフォーマットを Snowflake に作成します。次に、コピー先の dataset を格納する bucket を指定します。最後に、その dataset を bucket にコピーします。
データ量が約 5TB、最大ファイルサイズが 150MB の dataset を、同じ AWS us-east-1 Region にある 2X-Large Snowflake warehouse を使って S3 bucket にコピーする場合、所要時間はおよそ 30 分です。
2

ClickHouse にインポートする

データが中間 object storage にステージングされたら、以下のように s3 table function などの ClickHouse 関数を使用して、テーブルにデータを挿入できます。この例では AWS S3 用の s3 table function を使用していますが、Google Cloud Storage には gcs table function、Azure Blob Storage には azureBlobStorage table function を使用できます。次のターゲットテーブルのスキーマを前提とします。
次に、INSERT INTO SELECT コマンドを使用して、S3 から ClickHouse テーブルにデータを挿入できます。
ネストされたカラム構造に関する注記元の Snowflake テーブルスキーマにある VARIANT および OBJECT カラムは、デフォルトでは JSON 文字列として出力されるため、ClickHouse への挿入時にキャストが必要になります。some_file のようなネスト構造は、Snowflake によるコピー時に JSON 文字列へ変換されます。このデータをインポートするには、上記のように JSONExtract function を使用して、ClickHouse の挿入時にこれらの構造を Tuples に変換する必要があります。
3

データのエクスポート成功を確認する

データが正しく挿入されたかを確認するには、新しいテーブルに対して SELECT クエリを実行するだけです。
最終更新日 2026年7月1日