Миграция из 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, могут быть использованы для вставки данных в таблицу, как показано ниже.
В этом примере используется функция таблицы s3 для AWS S3, но функция таблицы gcs может быть использована для Google Cloud Storage, а функция таблицы azureBlobStorage может быть использована для Azure Blob Storage.
Предположим, что у нас схема целевой таблицы следующая:
Теперь мы можем использовать команду INSERT INTO SELECT
, чтобы вставить данные из S3 в таблицу ClickHouse:
Колонки VARIANT
и OBJECT
в оригинальной схеме таблицы Snowflake будут выводиться как JSON строки по умолчанию, что заставляет нас приводить их к нужному типу при вставке в ClickHouse.
Вложенные структуры, такие как some_file
, конвертируются в JSON строки при копировании в Snowflake. Импорт этих данных требует трансформации этих структур в Tuples во время вставки в ClickHouse, используя функцию JSONExtract, как показано выше.
3. Тестирование успешного экспорта данных
Чтобы проверить, были ли ваши данные правильно вставлены, просто выполните запрос SELECT
на вашей новой таблице:
Дополнительные материалы и поддержка
Кроме этого руководства, мы также рекомендуем прочитать нашу статью в блоге сравнение Snowflake и ClickHouse.
Если у вас возникли проблемы с передачей данных из Snowflake в ClickHouse, пожалуйста, свяжитесь с нами по адресу [email protected].