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

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