Skip to main content
ClickHouse CLI (clickhousectl) — это универсальный инструмент командной строки для управления ресурсами ClickHouse Cloud и локальной разработки на базе ClickHouse. Он также позволяет управлять сервисами ClickHouse Cloud Postgres и ClickPipes. Эта страница представляет собой справочник по набору команд clickhousectl 0.4.2. Выполните clickhousectl --version, чтобы узнать установленную версию, и clickhousectl <command> --help для любой команды, чтобы получить полный список флагов.

Установка

Для удобства также автоматически создаётся алиас chctl. Чтобы обновить существующую установку до последней версии:

Управление Cloud

Войдите в ClickHouse Cloud и управляйте своими сервисами прямо из командной строки.

Аутентификация

Ключи API сохраняются в .clickhouse/credentials.json (локально в проекте, файл игнорируется git). Также можно использовать переменные окружения:
Старшинство учётных данных, от высшего к низшему: флаги --api-key/--api-secret, учётные данные проекта в .clickhouse/credentials.json, переменные окружения (сначала shell, затем .env), токены OAuth, полученные через cloud auth login. Токены OAuth работают только для чтения; команды записи (create, delete, start, stop, update, scale) требуют аутентификации по ключу API.

Сервисы

Выполнение запросов

Выполняйте SQL-запросы к сервису ClickHouse Cloud по HTTP через Query API — локальный бинарный файл clickhouse и пароль сервиса при этом не нужны. Необходимо указать ровно один из параметров --id или --name:
При аутентификации по ключу API запросы выполняются с правами на чтение и запись. Аутентифицированный ключ используется напрямую, если эндпоинт запроса сервиса уже разрешает его; в противном случае первый запрос создаёт эндпоинт запроса и отдельный ключ на чтение/запись для этого сервиса и сохраняет его в .clickhouse/credentials.json. Передайте --no-auto-enable, чтобы команда завершалась с ошибкой вместо создания ресурсов. При использовании OAuth SQL выполняется от имени вашего облачного пользователя с доступом только для чтения (только SELECT), и ничего не создаётся. Что важно знать:
  • service query выполняет один оператор на запрос. SQL с несколькими операторами отклоняется Query API независимо от способа передачи — --query, --queries-file или stdin — с сообщением Error: SQL error 62: Syntax error (Multi-statements are not allowed). Завершающая ; у одиночного оператора допустима. Для скриптов выполните clickhousectl local use latest и подключайтесь к сервису через clickhouse client.
  • --query и --queries-file взаимоисключающи (код выхода 2). Stdin читается только в том случае, если не указан ни один из них. --query никогда не читает stdin, поэтому перенаправление или передача данных по конвейеру вместе с ним приводит к явной ошибке, а не молча превращается в no-op: Error: --query cannot be combined with SQL or data on stdin. Вместо этого отправляйте INSERT вместе с его данными единым потоком — printf 'INSERT INTO t FORMAT CSV\n' | cat - data.csv | clickhousectl cloud service query --id <service-id> — либо считывайте оператор целиком из stdin с помощью --queries-file -.
  • Формат вывода по умолчанию — PrettyCompact в терминале и TabSeparated при передаче по конвейеру. --json выбирает JSONEachRow и не может использоваться вместе с --format (код выхода 2).
  • Сохранённый ключ Query API, который эндпоинт отклоняет с HTTP 401/403, никогда не заменяется автоматически; CLI читает управляющую запись ключа лишь для того, чтобы сообщить причину. Замените именно этот credential командой clickhousectl cloud service repair-query-key <service-id> — она также удаляет заменённый ключ. На работающем сервисе она завершается с кодом 0 только после того, как пробный запрос с новым ключом выполнится успешно; результат отражается в поле verification вывода --json. Если по истечении окна готовности Query API по-прежнему отклоняет ключ, команда завершается с кодом 1, но исправление остаётся в силе: не запускайте её повторно, а выполните cloud service query.
  • Query API завершается по тайм-ауту примерно через 30 секунд; оператор продолжает выполняться на сервисе, но результат теряется. Для более длительных операций выполните clickhousectl local use latest, чтобы поместить стандартный бинарный файл clickhouse в PATH, и подключитесь с помощью clickhouse client --host <host> --secure --port 9440 --user default --password <password>.

Конечные точки сервиса и конфигурация

--backup-start-time должен указывать ровно начало часа (HH:00); это проверяется в CLI до любого вызова API. Кроме того, период резервного копирования должен составлять 24 или 48 часов: передайте --backup-period-hours 24 или --backup-period-hours 48 в той же команде либо заранее сохраните одно из этих двух значений. При любом другом сохранённом периоде CLI откажет ещё до обращения к API, выдав Error: the stored backup period is 12 hours, but --backup-start-time requires 24 or 48. --clear-backup-start-time удаляет сохранённое время начала и снимает это ограничение. Используйте его вместе с --backup-period-hours, чтобы одним вызовом сбросить время начала и задать любой период. Этот параметр конфликтует с --backup-start-time.

Резервные копии

Чтобы восстановить резервную копию, создайте на её основе новый сервис: clickhousectl cloud service create --name restored-service --backup-id <backup-id>.

ClickPipes

Управление ClickPipes для ингестии данных в сервис ClickHouse Cloud. Большинство команд принимают ID сервиса первым аргументом.
Что нужно знать:
  • clickpipe create postgres требует указания одного из флагов: --table-mapping <schema.table:target_table> (можно указывать несколько раз, по одной таблице на флаг) или --table-mapping-json <json>; их можно сочетать. Форма JSON принимает объект сопоставления таблиц из API дословно и является единственным способом задать excludedColumns, sortingKeys, partitionByExpr, partitionKey и tableEngine. Обратите внимание: partitionKey разбивает начальный снимок на партиции для параллелизма и не имеет отношения к PARTITION BY целевой таблицы, за который отвечает partitionByExpr. Флаг --iam-role обязателен при --auth IAM_ROLE и отклоняется при базовой аутентификации, а --replication-slot-name допустим только вместе с --replication-mode cdc_only.
  • Настройки Postgres CDC применяются при создании пайпа: --sync-interval-seconds, --pull-batch-size, --initial-load-parallelism, --snapshot-rows-per-partition, --snapshot-parallel-tables, --allow-nullable-columns, --enable-failover-slots и --delete-on-merge. Впоследствии можно изменить только sync interval и pull batch size; настройки снимка и начальной загрузки изменению не подлежат.
  • Флаг --role <role> в любой подкоманде clickpipe create можно указывать несколько раз; он определяет роль ClickHouse, выдаваемую пользователю пункта назначения пайпа. Эта роль заменяет ту, которую пользователь получил бы по умолчанию: без --role пользователю назначаются clickpipes_system и default_role, а с --role my_role — clickpipes_system и my_role. Роль должна позволять создавать таблицы в целевой базе данных — с ролью только для чтения создание завершится ошибкой Not enough privileges. Зарезервированные в API имена clickpipes и clickpipes_system отклоняются.
  • Для источников Postgres TLS и проверка сертификата включены по умолчанию. Если цепочка сертификатов источника публично доверенная, файл CA не нужен; для частного или самоподписанного CA источника передайте его PEM-бандл через --ca-certificate <path>. Для источника ClickHouse Cloud Postgres получите этот бандл командой clickhousectl cloud postgres certs get. При проверке имени хоста используется значение --host, если оно не переопределено флагом --tls-host <hostname>.
  • Для пайпов Kafka и Kinesis значение --auth выводится из флагов учётных данных, если оно не указано; если флаги учётных данных не заданы, аутентификация не выполняется.
  • Команда clickpipe settings охватывает настройки ингестии только для потоковых пайпов (Kafka, Kinesis) и пайпов объектного хранилища, причём настройки, специфичные для Kafka, для остальных пайпов не выводятся. У пайпов CDC для баз данных (Postgres, MySQL, MongoDB, BigQuery) настроек ингестии нет: settings get для такого пайпа завершается с кодом 1 и отсылает к clickhousectl cloud clickpipe get <service-id> <clickpipe-id> — именно там показываются их sync interval и pull batch size.
  • Пайп может использовать только обратную частную конечную точку, достигшую статуса Ready; конечная точка AWS PrivateLink остаётся в состоянии PendingAcceptance, пока запрос на подключение не будет принят в аккаунте, которому принадлежит источник. Пайпы Kafka ссылаются на конечную точку по ID через --reverse-private-endpoint-id (можно указывать несколько раз); пайпы CDC для Postgres и MySQL передают одно из значений dnsNames конечной точки в --host.
  • Пайпы Google Cloud Pub/Sub доступны в режиме ограниченного предварительного доступа: прежде чем создавать такой пайп, обратитесь в службу поддержки, чтобы включить эту возможность для вашей организации. Флаг --service-account-file принимает путь к JSON-ключу сервисного аккаунта GCP либо - для чтения ключа из stdin; сам ключ передать в строке нельзя, поэтому он не попадает в списки процессов и историю командной оболочки.

Postgres services (бета)

Создание сервисов ClickHouse Cloud Postgres и управление ими.
Что следует знать:
  • Значение --provider по умолчанию — aws; также принимается gcp с размерами машин GCP, такими как c4-standard-4. Значение --size проверяется на стороне Cloud API, а не CLI, поэтому неподдерживаемый размер будет отклонён только сервером.
  • Изменения ролей применяются не мгновенно, и API подтверждает promote и switchover ещё до их фактического применения, поэтому код выхода 0 сам по себе не гарантирует, что роль изменилась. Обе команды принимают флаг --wait, который опрашивает состояние, пока целевой сервис не сообщит о новой роли; параметр --wait-timeout <seconds> (по умолчанию 300) ограничивает время опроса. Прежний основной сервис может ещё несколько минут сообщать isPrimary=true, поэтому с помощью clickhousectl cloud postgres list --filter isPrimary=true убедитесь, что основным является ровно один сервис.
  • postgres delete работает в любом состоянии, включая running, поэтому предварительно останавливать сервис не требуется.

Организации

Ключи API

Участники и приглашения

Журнал активности

Вывод JSON

Используйте флаг --json, чтобы получать ответы в формате JSON при выполнении любой облачной команды:
Команды org prometheus и service prometheus — исключение: они всегда выводят необработанный текст экспозиции Prometheus и молча игнорируют --json.

Локальная разработка

CLI также управляет локальными установками ClickHouse, локальными серверами и локальными инстансами Postgres на базе Docker. Как начать работу с локальной разработкой, см. на странице clickhousectl (CLI).
Что нужно знать:
  • Команды local работают в пределах проекта: они используют каталог .clickhouse в текущем рабочем каталоге и никогда не ищут его в родительских каталогах. Перед их запуском перейдите в корень проекта.
  • clickhousectl local use также создаёт символическую ссылку ~/.local/bin/clickhouse, благодаря чему стандартные подкоманды, такие как clickhouse client, clickhouse benchmark и clickhouse format, становятся доступны напрямую. Передайте --no-global, чтобы пропустить создание символической ссылки.
  • local remove принимает точную установленную версию. Команда откажется удалять версию, которую использует запущенный сервер в каком-либо проекте, а также версию, назначенную текущей по умолчанию; --force останавливает такие серверы и сбрасывает значение по умолчанию вместе с глобальной символической ссылкой.
  • Без указания имени local server stop останавливает default, если он существует, иначе — единственный известный сервер; при наличии нескольких серверов, отличных от default, команда запросит имя. local server remove без имени выбирает только существующий default — пользовательский сервер она никогда не угадывает.
  • local client принимает -v/--version для выбора установленной версии клиента в режиме прямого указания хоста и порта, допускает повторение -q для нескольких запросов и принимает несколько путей в --queries-file. Совмещение --query и --queries-file считается ошибкой использования.
  • local postgres start блокирует выполнение до тех пор, пока PostgreSQL не начнёт принимать подключения, но не дольше числа секунд, заданного в --wait-timeout (по умолчанию 60, максимум 600). Если --port не указан, используется порт 5432 при условии, что он свободен, иначе порт выбирается автоматически; явно запрошенный порт, который уже занят, отклоняется.

Другие команды

Требования

  • macOS (aarch64, x86_64) или Linux (aarch64, x86_64)
  • Для команд Cloud нужен ключ API ClickHouse Cloud для доступа на запись; вход через OAuth даёт доступ только для чтения
  • clickhousectl local postgres требует Docker
Последнее изменение 26 сентября 2026 г.