Skip to main content
Предоставляет табличный интерфейс для SELECT и INSERT данных из Google Cloud Storage. Требуется роль IAM Storage Object User. Это псевдоним табличной функции s3. Если в вашем кластере несколько реплик, вместо неё можно использовать функцию s3Cluster (она работает с GCS), чтобы распараллелить вставки.

Синтаксис

GCSТабличная функция GCS работает с Google Cloud Storage через GCS XML API и HMAC-ключи. Подробнее о конечной точке и HMAC см. в документации Google по совместимости.

Аргументы

GCSПуть GCS имеет следующий формат, поскольку конечная точка Google XML API отличается от JSON API:
а не https://storage.cloud.google.com.
Аргументы также можно передавать с помощью именованных коллекций. В этом случае url, format, structure, compression_method, partition_strategy работают так же, а также поддерживаются дополнительные параметры:

Возвращаемое значение

Таблица с указанной структурой для чтения или записи данных в указанный файл.

Примеры

Выбор первых двух строк из файла GCS https://storage.googleapis.com/clickhouse_public_datasets/my-test-bucket-768/data.csv.gz. Метод сжатия автоматически определяется по расширению файла .gz:
Тот же запрос, что и выше, но с явно указанным методом сжатия gzip вместо автоопределения:

Использование

Предположим, что у нас есть несколько файлов со следующими URI в GCS: Подсчитайте количество строк в файлах, имена которых оканчиваются числами от 1 до 3:
Подсчитайте общее количество строк во всех файлах этих двух каталогов:
Если в списке файлов есть диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или символ ?.
Подсчитайте общее количество строк в файлах с именами file-000.csv, file-001.csv, … , file-999.csv:
Запишите данные в файл test-data.csv.gz:
Запишите данные из существующей таблицы в файл test-data.csv.gz:
Шаблон glob ** можно использовать для рекурсивного обхода каталогов. Рассмотрим пример ниже: он рекурсивно извлечёт все файлы из каталога my-test-bucket-768:
Ниже рекурсивно извлекаются данные из всех файлов test-data.csv.gz во всех папках внутри каталога my-test-bucket:
Для production-сценариев рекомендуется использовать именованные коллекции. Ниже приведён пример:

Запись с разбиением на партиции

Если при вставке данных в таблицу GCS указать выражение PARTITION BY, для каждого значения партиции будет создан отдельный файл. Разбиение данных на отдельные файлы помогает повысить эффективность чтения. Если compatibility установлена в 26.6 или более позднюю версию либо используются текущие значения по умолчанию, стратегией партиционирования по умолчанию является hive. Поскольку пути, содержащие {_partition_id}, требуют wildcard, в следующих примерах явно задается partition_strategy='wildcard'. Примеры
  1. Использование идентификатора партиции в ключе создает отдельные файлы:
В результате данные записываются в три файла: file_x.csv, file_y.csv и file_z.csv.
  1. Использование идентификатора партиции в имени бакета приводит к созданию файлов в разных бакетах:
В результате данные записываются в три файла в разных бакетах: my_bucket_1/file.csv, my_bucket_10/file.csv и my_bucket_20/file.csv.
Последнее изменение 23 июля 2026 г.