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

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