このガイドでは、Snowflake から ClickHouse へデータを移行する方法を説明します。Snowflake から ClickHouse へデータを移行するには、 転送用の中間ストレージとして S3 などのオブジェクトストアを使用する必要があります。移行プロセスでは、 Snowflake の
COPY INTO コマンドと ClickHouse の INSERT INTO SELECT
も利用します。
Snowflake からデータをエクスポートする
Snowflake からデータをエクスポートするには、上図のように外部ステージを使用する必要があります。以下のスキーマを持つ Snowflake テーブルをエクスポートするとします。us-east-1 Region にある 2X-Large Snowflake warehouse を使って S3 bucket にコピーする場合、所要時間はおよそ 30 分です。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 に変換する必要があります。