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

Экспорт данных из Snowflake требует использования внешней стадии, как показано на диаграмме выше.
Предположим, мы хотим экспортировать таблицу Snowflake со следующей схемой:
Чтобы перенести данные этой таблицы в базу данных ClickHouse, сначала нужно скопировать эти данные на внешнюю стадию. При копировании данных мы рекомендуем использовать Parquet в качестве промежуточного формата, так как он позволяет делиться информацией о типах, сохраняет точность, хорошо сжимается и нативно поддерживает вложенные структуры, общие для аналитики.
В следующем примере мы создаем именованный формат файлов в Snowflake для представления Parquet и желаемых параметров файла. Затем мы указываем, какой бакет будет содержать наш скопированный набор данных. Наконец, мы копируем набор данных в бакет.
Для набора данных объемом около 5TB с максимальным размером файла 150MB и использованием склада Snowflake 2X-Large, расположенного в том же AWS регионе us-east-1
, копирование данных в S3 бакет займет около 30 минут.
2. Импорт в 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 function, как показано выше.
3. Тестирование успешного экспорта данных
Чтобы проверить, были ли ваши данные правильно вставлены, просто выполните запрос SELECT
к вашей новой таблице:
Дальнейшее чтение и поддержка
В дополнение к этому руководству, мы также рекомендуем прочитать нашу статью в блоге сравнение Snowflake и ClickHouse.
Если у вас возникли проблемы с передачей данных из Snowflake в ClickHouse, пожалуйста, свяжитесь с нами по адресу support@clickhouse.com.