Перейти к основному содержанию
Это руководство подходит для ClickHouse Cloud и самоуправляемого ClickHouse v23.5+. В этом руководстве показано, как перенести данные из BigQuery в ClickHouse. Сначала мы экспортируем таблицу в объектное хранилище Google (GCS), а затем импортируем эти данные в ClickHouse Cloud. Эти шаги нужно повторить для каждой таблицы, которую вы хотите перенести из BigQuery в ClickHouse.

Сколько времени занимает экспорт данных в ClickHouse?

Время экспорта данных из BigQuery в ClickHouse зависит от размера вашего набора данных. Для сравнения: экспорт общедоступного набора данных Ethereum объёмом 4 ТБ из BigQuery в ClickHouse по этому руководству занимает около часа.
1

Экспорт данных таблицы в GCS

На этом шаге мы используем рабочее пространство SQL в BigQuery для выполнения SQL-команд. Ниже показано, как экспортировать таблицу BigQuery mytable в бакет GCS с помощью оператора EXPORT DATA.
В приведённом выше запросе мы экспортируем нашу таблицу BigQuery в формат данных Parquet. В параметре uri также используется символ *. Это гарантирует, что результат будет разбит на несколько файлов с численно возрастающим суффиксом, если объём экспорта превысит 1 ГБ данных.У этого подхода есть ряд преимуществ:
  • Google позволяет бесплатно экспортировать в GCS до 50 ТБ в день. Пользователи платят только за хранение в GCS.
  • При экспорте автоматически создаётся несколько файлов, при этом размер каждого не превышает 1 ГБ данных таблицы. Это полезно для ClickHouse, поскольку позволяет распараллелить импорт.
  • Parquet как столбцово-ориентированный формат лучше подходит для обмена данными, поскольку он изначально сжат и позволяет BigQuery быстрее выполнять экспорт, а ClickHouse — запросы
2

Импорт данных из GCS в ClickHouse

После завершения экспорта эти данные можно импортировать в таблицу ClickHouse. Для выполнения приведённых ниже команд можно использовать консоль ClickHouse SQL или clickhouse-client.Сначала необходимо создать таблицу в ClickHouse:
После создания таблицы включите настройку parallel_distributed_insert_select, если в вашем кластере несколько реплик ClickHouse, чтобы ускорить экспорт. Если у вас только один узел ClickHouse, этот шаг можно пропустить:
Наконец, мы можем вставить данные из GCS в нашу таблицу ClickHouse с помощью команды INSERT INTO SELECT, которая добавляет данные в таблицу на основе результатов запроса SELECT.Чтобы получить данные для INSERT, можно использовать функцию s3Cluster и загрузить данные из нашего GCS-бакета, поскольку GCS совместим с Amazon S3. Если у вас только один узел ClickHouse, вместо функции s3Cluster можно использовать табличную функцию s3.
ACCESS_ID и SECRET, используемые в приведённом выше запросе, — это ваши HMAC-ключи, связанные с вашим бакетом GCS.
Используйте ifNull при экспорте столбцов с типом NullableВ приведённом выше запросе мы используем функцию ifNull со столбцом some_text, чтобы вставить данные в таблицу ClickHouse, подставляя значение по умолчанию. Вы также можете сделать столбцы в ClickHouse Nullable, но это не рекомендуется, так как это может негативно сказаться на производительности.В качестве альтернативы можно задать SET input_format_null_as_default=1, и любые отсутствующие значения или значения NULL будут заменяться значениями по умолчанию для соответствующих столбцов, если такие значения заданы.
3

Проверка успешного экспорта данных

Чтобы проверить, что данные были успешно вставлены, просто выполните запрос SELECT к новой таблице:
Чтобы экспортировать другие таблицы BigQuery, просто повторите описанные выше шаги для каждой дополнительной таблицы.

Дополнительные материалы и поддержка

В дополнение к этому руководству рекомендуем также прочитать нашу статью в блоге, где показано, как использовать ClickHouse для ускорения BigQuery и как выполнять инкрементальный импорт. Если у вас возникли проблемы с переносом данных из BigQuery в ClickHouse, свяжитесь с нами по адресу support@clickhouse.com.
Последнее изменение 25 июня 2026 г.