Миграция из Snowflake в ClickHouse
В этом руководстве описывается, как перенести данные из Snowflake в ClickHouse.
Для миграции данных между Snowflake и ClickHouse необходимо использовать объектное хранилище,
например S3, в качестве промежуточного хранилища для передачи данных. Процесс миграции также
предполагает использование команд COPY INTO в Snowflake и INSERT INTO SELECT
в ClickHouse.
Экспорт данных из Snowflake

Экспорт данных из Snowflake требует использования внешнего stage, как показано на диаграмме выше.
Предположим, что мы хотим экспортировать таблицу Snowflake со следующей схемой:
Чтобы перенести данные этой таблицы в базу данных ClickHouse, сначала необходимо скопировать эти данные во внешний stage. При копировании данных в качестве промежуточного формата мы рекомендуем использовать Parquet, так как он позволяет передавать информацию о типах, сохраняет точность, хорошо сжимается и нативно поддерживает вложенные структуры, типичные для аналитики.
В примере ниже мы создаём именованный файловый формат в Snowflake для представления Parquet и нужных файловых опций. Затем мы указываем, какой bucket будет содержать наш скопированный набор данных. Наконец, мы копируем набор данных в этот bucket.
Для набора данных объёмом около 5 ТБ с максимальным размером файла 150 МБ и при использовании Snowflake‑warehouse размера 2X-Large, расположенного в том же регионе AWS us-east-1, копирование данных в bucket S3 займёт около 30 минут.
Импорт в ClickHouse
После того как данные размещены во временном объектном хранилище, функции ClickHouse, такие как табличная функция s3, можно использовать для вставки данных в таблицу, как показано ниже.
В этом примере используется табличная функция s3 для AWS S3, но табличную функцию gcs можно использовать для Google Cloud Storage, а табличную функцию azureBlobStorage — для Azure Blob Storage.
Предположим, что целевая схема таблицы имеет следующий вид:
Затем мы можем использовать команду INSERT INTO SELECT, чтобы загрузить данные из S3 в таблицу ClickHouse:
Столбцы VARIANT и OBJECT в исходной схеме таблицы Snowflake по умолчанию будут выводиться в виде строк JSON, поэтому при вставке в ClickHouse их необходимо явно приводить к нужному типу.
Вложенные структуры, такие как some_file, при выполнении операции COPY в Snowflake преобразуются в строки JSON. Импорт этих данных требует преобразования таких структур в тип Tuple при вставке в ClickHouse с использованием функции JSONExtract, как показано выше.
Проверка успешного экспорта данных
Чтобы проверить, что ваши данные были корректно вставлены, просто выполните SELECT‑запрос к новой таблице: