Клиент ClickHouse
ClickHouse предоставляет собственный клиент командной строки для выполнения SQL-запросов непосредственно к серверу ClickHouse. Он поддерживает как интерактивный режим (для выполнения запросов в реальном времени), так и пакетный режим (для сценариев и автоматизации). Результаты запросов можно выводить в терминал или экспортировать в файл; поддерживаются все форматы вывода ClickHouse, такие как Pretty, CSV, JSON и другие.
Клиент в реальном времени показывает ход выполнения запроса: индикатор прогресса, количество считанных строк, объём обработанных данных в байтах и время выполнения запроса. Он поддерживает как параметры командной строки, так и файлы конфигурации.
Установка
Чтобы загрузить ClickHouse, выполните:
Чтобы установить и его, выполните:
См. Install ClickHouse, чтобы ознакомиться с другими вариантами установки.
Разные версии клиента и сервера совместимы между собой, однако некоторые функции могут быть недоступны в старых версиях клиента. Рекомендуется использовать одну и ту же версию клиента и сервера.
Запуск
Если вы только скачали ClickHouse, но не установили его, используйте ./clickhouse client вместо clickhouse-client.
Чтобы подключиться к серверу ClickHouse, выполните:
При необходимости укажите дополнительные параметры подключения:
| Настройка | Описание |
|---|---|
--port <port> | Порт, на котором сервер ClickHouse принимает подключения. Порты по умолчанию: 9440 (TLS) и 9000 (без TLS). Обратите внимание, что клиент ClickHouse использует нативный протокол, а не HTTP(S). |
-s [ --secure ] | Использовать ли TLS (обычно определяется автоматически). |
-u [ --user ] <username> | Пользователь базы данных, от имени которого нужно подключаться. По умолчанию используется пользователь default. |
--password <password> | Пароль пользователя базы данных. Вы также можете указать пароль для подключения в файле конфигурации. Если пароль не указан, клиент запросит его. |
-c [ --config ] <path-to-file> | Путь к файлу конфигурации клиента ClickHouse, если он находится не в одном из стандартных расположений. См. Файлы конфигурации. |
--connection <name> | Имя предварительно настроенного подключения из файла конфигурации. |
Полный список параметров командной строки см. в разделе Параметры командной строки.
Подключение к ClickHouse Cloud
Информация о вашем сервисе ClickHouse Cloud доступна в консоли ClickHouse Cloud. Выберите сервис, к которому нужно подключиться, и нажмите Connect:

Выберите Native — отобразятся сведения и пример команды clickhouse-client:

Хранение подключений в файле конфигурации
Вы можете хранить данные для подключения к одному или нескольким серверам ClickHouse в файле конфигурации.
Формат выглядит так:
См. раздел о настройке файлов — там приведена дополнительная информация.
Чтобы сосредоточиться на синтаксисе запросов, в остальных примерах опущены параметры подключения (--host, --port и т. д.). Не забудьте добавить их при использовании команд.
Интерактивный режим
Использование интерактивного режима
Чтобы запустить ClickHouse в интерактивном режиме, просто выполните:
Это откроет цикл Read-Eval-Print Loop (REPL), в котором можно интерактивно вводить SQL-запросы. После подключения появится приглашение, в котором можно вводить запросы:
В интерактивном режиме выходной формат по умолчанию — PrettyCompact.
Вы можете изменить формат в предложении FORMAT запроса или указав параметр командной строки --format.
Чтобы использовать формат Vertical, можно использовать --vertical или указать \G в конце запроса.
В этом формате каждое значение выводится на отдельной строке, что удобно для широких таблиц.
В интерактивном режиме по умолчанию всё введённое выполняется при нажатии Enter.
Точка с запятой в конце запроса не требуется.
Вы можете запустить клиент ClickHouse с параметром -m, --multiline.
Чтобы ввести многострочный запрос, введите обратную косую черту \ перед переводом строки.
После нажатия Enter вам будет предложено ввести следующую строку запроса.
Чтобы выполнить запрос, завершите его точкой с запятой и нажмите Enter.
Клиент ClickHouse основан на replxx (аналог readline), поэтому поддерживает привычные сочетания клавиш и сохраняет историю.
По умолчанию история записывается в ~/.clickhouse-client-history.
Чтобы выйти из клиента, нажмите Ctrl+D или введите вместо запроса одно из следующих значений:
exitилиexit;quitилиquit;q,Qили:qlogoutилиlogout;
Информация об обработке запроса
При обработке запроса клиент отображает:
- Ход выполнения, который по умолчанию обновляется не чаще 10 раз в секунду. Для быстрых запросов он может не успеть отобразиться.
- Отформатированный запрос после разбора — для отладки.
- Результат в указанном формате.
- Количество строк в результате, прошедшее время и среднюю скорость обработки запроса. Все объёмы данных относятся к несжатым данным.
Вы можете отменить длительный запрос, нажав Ctrl+C.
Однако вам всё равно потребуется немного подождать, пока сервер прервёт запрос.
На некоторых этапах отменить запрос невозможно.
Если не дождаться и нажать Ctrl+C второй раз, клиент завершит работу.
Клиент ClickHouse позволяет передавать внешние данные (внешние временные таблицы) при выполнении запросов. Дополнительная информация приведена в разделе Внешние данные для обработки запроса.
Псевдонимы
Вы можете использовать в REPL следующие псевдонимы:
\l- SHOW DATABASES\d- SHOW TABLES\c <DATABASE>- USE DATABASE.- повторить последний запрос
Сочетания клавиш
Alt (Option) + Shift + e— открыть редактор с текущим запросом. Используемый редактор можно задать через переменную окруженияEDITOR. По умолчанию используетсяvim.Alt (Option) + #— закомментировать строку.Ctrl + r— нечёткий поиск по истории.
Полный список всех доступных сочетаний клавиш см. в replxx.
Чтобы настроить корректную работу клавиши Meta (Option) в macOS:
iTerm2: перейдите в Preferences -> Profile -> Keys -> Left Option key и нажмите Esc+
Пакетный режим
Использование пакетного режима
Вместо интерактивной работы с клиентом ClickHouse его можно запустить в пакетном режиме. В пакетном режиме ClickHouse выполняет один запрос и сразу завершает работу — без интерактивного приглашения и цикла ввода команд.
Один запрос можно указать следующим образом:
Вы также можете использовать параметр --query командной строки:
Вы можете передать запрос через stdin:
При наличии таблицы messages вы также можете вставить данные из командной строки:
Если указан параметр --query, любые входные данные добавляются к запросу после символа перевода строки.
Вставка CSV-файла в удалённый сервис ClickHouse
В этом примере в существующую таблицу cell_towers в базе данных default вставляется CSV-файл cell_towers.csv с выборкой данных:
Примеры вставки данных из командной строки
Данные из командной строки можно вставить несколькими способами. В примере ниже в таблицу ClickHouse вставляются две строки CSV-данных в пакетном режиме:
В приведённом ниже примере cat <<_EOF начинает heredoc, который считывает всё содержимое до повторного появления _EOF, а затем выводит его:
В примере ниже содержимое файла file.csv выводится в stdout с помощью cat, а затем через конвейер передаётся на вход clickhouse-client:
В пакетном режиме формат данных по умолчанию — TabSeparated.
Вы можете задать формат в предложении FORMAT запроса, как показано в примере выше. См. форматы.
Запросы с параметрами
Вы можете указывать параметры в запросе и передавать им значения через параметры командной строки. Это позволяет не форматировать запрос на стороне клиента, подставляя в него конкретные динамические значения. Например:
Параметры также можно задавать в интерактивном сеансе:
Синтаксис запроса
В запросе заключите в фигурные скобки значения, которые нужно подставить с помощью параметров командной строки, в следующем формате:
| Параметр | Описание |
|---|---|
name | Идентификатор заполнителя. Соответствующая настройка командной строки — --param_<name> = value. |
data type | Тип данных параметра. Например, структура данных вида (integer, ('string', integer)) может иметь тип данных Tuple(UInt8, Tuple(String, UInt8)) (также можно использовать и другие целочисленные типы). В качестве параметров также можно передавать имя таблицы, имя базы данных и имена столбцов; в этом случае в качестве типа данных следует использовать Identifier. |
Примеры
Генерация SQL с помощью ИИ
Клиент ClickHouse включает встроенные средства ИИ для генерации SQL-запросов по описанию на естественном языке. Эта функция помогает писать сложные запросы без глубокого знания SQL.
Поддержка ИИ работает сразу, если у вас задана переменная окружения OPENAI_API_KEY или ANTHROPIC_API_KEY. Дополнительные параметры см. в разделе Настройка.
Использование
Чтобы воспользоваться генерацией SQL с помощью ИИ, добавьте префикс ?? перед запросом на естественном языке:
ИИ будет:
- Автоматически анализировать schema вашей базы данных
- Генерировать подходящий SQL на основе обнаруженных таблиц и столбцов
- Немедленно выполнять сгенерированный запрос
Пример
Настройка
Для генерации SQL с помощью ИИ необходимо настроить ИИ-провайдера в файле конфигурации клиента ClickHouse. Можно использовать OpenAI, Anthropic или любой API-сервис, совместимый с OpenAI.
Резервный вариант с использованием переменных окружения
Если в настройках AI не указана конфигурация в 설정 파일, клиент ClickHouse автоматически попытается использовать переменные окружения:
- Сначала проверяется переменная окружения
OPENAI_API_KEY - Если она не найдена, проверяется переменная окружения
ANTHROPIC_API_KEY - Если не найдена ни одна из них, функции AI будут отключены
Это позволяет быстро выполнить настройку без 설정 파일:
Файл конфигурации
Чтобы более гибко управлять настройками ИИ, задайте их в файле конфигурации клиента ClickHouse, расположенном по одному из следующих путей:
$XDG_CONFIG_HOME/clickhouse/config.xml(или~/.config/clickhouse/config.xml, еслиXDG_CONFIG_HOMEне задан) (формат XML)$XDG_CONFIG_HOME/clickhouse/config.yaml(или~/.config/clickhouse/config.yaml, еслиXDG_CONFIG_HOMEне задан) (формат YAML)~/.clickhouse-client/config.xml(формат XML, устаревший путь)~/.clickhouse-client/config.yaml(формат YAML, устаревший путь)- Или укажите пользовательский путь с помощью
--config-file
- XML
- YAML
Использование OpenAI-совместимых API (например, OpenRouter):
Примеры минимальной конфигурации:
Параметры
Обязательные параметры
api_key- Ваш API-ключ для сервиса ИИ. Можно не указывать, если он задан через переменную окружения:- OpenAI:
OPENAI_API_KEY - Anthropic:
ANTHROPIC_API_KEY - Примечание: API-ключ в файле конфигурации имеет приоритет над переменной окружения
- OpenAI:
provider- Провайдер ИИ:openaiилиanthropic- Если не указан, автоматически выбирается на основе доступных переменных окружения
Конфигурация модели
model- Модель, которую нужно использовать (по умолчанию: зависит от провайдера)- OpenAI:
gpt-4o,gpt-4,gpt-3.5-turboи т. д. - Anthropic:
claude-3-5-sonnet-20241022,claude-3-opus-20240229и т. д. - OpenRouter: Используйте их схему именования моделей, например
anthropic/claude-3.5-sonnet
- OpenAI:
Настройки подключения
base_url- Пользовательская конечная точка API для OpenAI-совместимых сервисов (необязательно)timeout_seconds- Тайм-аут запроса в секундах (по умолчанию:30)
Изучение schema
enable_schema_access- Разрешить ИИ изучать schema базы данных (по умолчанию:true)max_steps- Максимальное количество шагов вызова инструментов для изучения schema (по умолчанию:10)
Параметры генерации
temperature- Управляет случайностью: 0.0 = детерминированно, 1.0 = более креативно (по умолчанию:0.0)max_tokens- Максимальная длина ответа в токенах (по умолчанию:1000)system_prompt- Пользовательские инструкции для ИИ (необязательно)
Как это работает
Генератор SQL на базе ИИ использует многоэтапный процесс:
Обнаружение schema
ИИ использует встроенные инструменты для изучения вашей базы данных:
- Выводит список доступных баз данных
- Находит таблицы в соответствующих базах данных
- Анализирует структуру таблиц с помощью команд
CREATE TABLE
Генерация запроса
На основе обнаруженной schema ИИ генерирует SQL, который:
- Соответствует вашему намерению, выраженному на естественном языке
- Использует правильные имена таблиц и столбцов
- Применяет подходящие соединения и агрегации
Выполнение
Сгенерированный SQL автоматически выполняется, а результаты отображаются
Ограничения
- Требуется активное подключение к интернету
- Использование API ограничено по скорости и может повлечь расходы со стороны поставщика ИИ
- Для сложных запросов может потребоваться несколько уточнений
- ИИ имеет доступ только для чтения к информации о schema, но не к фактическим данным
Безопасность
- API-ключи никогда не отправляются на серверы ClickHouse
- ИИ видит только информацию о schema (имена таблиц, столбцов и типы), но не сами данные
- Все сгенерированные запросы учитывают ваши текущие права доступа к базе данных
Строка подключения
Использование
Клиент ClickHouse также поддерживает подключение к серверу ClickHouse с помощью строки подключения, аналогичной строкам, используемым в MongoDB, PostgreSQL и MySQL. Она имеет следующий синтаксис:
| Компонент (все необязательны) | Описание | По умолчанию |
|---|---|---|
user | Имя пользователя базы данных. | default |
password | Пароль пользователя базы данных. Если указан : и пароль пуст, клиент предложит ввести пароль пользователя. | - |
hosts_and_ports | Список хостов и необязательных портов host[:port] [, host:[port]], .... | localhost:9000 |
database | Имя базы данных. | default |
query_parameters | Список пар ключ-значение param1=value1[,¶m2=value2], .... Для некоторых параметров значение не требуется. Имена параметров и их значения чувствительны к регистру. | - |
Примечания
Если имя пользователя, пароль или база данных указаны в строке подключения, их нельзя также указывать через --user, --password или --database (и наоборот).
Компонент host может быть либо именем хоста, либо адресом IPv4 или IPv6.
Адреса IPv6 должны быть заключены в []:
Строки подключения могут содержать несколько хостов. Клиент ClickHouse будет пытаться подключиться к этим хостам по порядку (слева направо). После установления соединения попытки подключения к оставшимся хостам не выполняются.
Строка подключения должна быть указана первым аргументом clickHouse-client.
Строку подключения можно использовать вместе с произвольным количеством других параметров командной строки, кроме --host и --port.
Для query_parameters допустимы следующие ключи:
| Ключ | Описание |
|---|---|
secure (или s) | Если указан этот ключ, клиент подключается к серверу по защищённому соединению (TLS). См. --secure в параметрах командной строки. |
Процентное кодирование
Символы, не входящие в US-ASCII, пробелы и специальные символы в следующих параметрах должны быть закодированы с помощью процентного кодирования:
userpasswordhostsdatabaseпараметры запроса
Примеры
Подключитесь к localhost через порт 9000 и выполните запрос SELECT 1.
Подключитесь к localhost под пользователем john с паролем secret, указав хост 127.0.0.1 и порт 9000
Подключитесь к localhost от имени пользователя default, используя хост с адресом IPv6 [::1] и порт 9000.
Подключитесь к localhost через порт 9000 в многострочном режиме.
Подключитесь к localhost по порту 9000, используя пользователя default.
Подключитесь к localhost на порту 9000; по умолчанию будет использоваться база данных my_database.
Подключитесь к localhost на порту 9000, по умолчанию используйте базу данных my_database, указанную в строке подключения, а для защищённого соединения — сокращённый параметр s.
Подключитесь к хосту по умолчанию, используя порт по умолчанию, пользователя по умолчанию и базу данных по умолчанию.
Подключитесь к хосту по умолчанию на порту по умолчанию от имени пользователя my_user без пароля.
Подключитесь к localhost, используя адрес электронной почты в качестве имени пользователя. Символ @ необходимо закодировать как %40.
Подключитесь к одному из двух хостов: 192.168.1.15, 192.168.1.25.
Формат идентификатора запроса
В интерактивном режиме клиент ClickHouse показывает идентификатор каждого запроса. По умолчанию он имеет следующий формат:
Пользовательский формат можно задать в файле конфигурации внутри тега query_id_formats. Заполнитель {query_id} в форматной строке заменяется идентификатором запроса. Внутри тега можно указать несколько форматных строк.
Эту возможность можно использовать для генерации URL-адресов, упрощающих профилирование запросов.
Пример
При указанной выше конфигурации идентификатор запроса отображается в следующем формате:
Файлы конфигурации
Клиент ClickHouse использует первый из следующих существующих файлов:
- Файл, указанный параметром
-c [ -C, --config, --config-file ]. ./clickhouse-client.[xml|yaml|yml]$XDG_CONFIG_HOME/clickhouse/config.[xml|yaml|yml](или~/.config/clickhouse/config.[xml|yaml|yml], еслиXDG_CONFIG_HOMEне задана)~/.clickhouse-client/config.[xml|yaml|yml]/etc/clickhouse-client/config.[xml|yaml|yml]
См. пример файла конфигурации в репозитории ClickHouse: clickhouse-client.xml
- XML
- YAML
Параметры переменных среды
Имя пользователя, пароль и хост можно задать с помощью переменных среды CLICKHOUSE_USER, CLICKHOUSE_PASSWORD и CLICKHOUSE_HOST.
Аргументы командной строки --user, --password или --host, а также строка подключения (если она указана), имеют приоритет над переменными среды.
Параметры командной строки
Все параметры командной строки можно указать прямо в командной строке или задать по умолчанию в файле конфигурации.
Общие параметры
| настройка | Описание | По умолчанию |
|---|---|---|
-c [ -C, --config, --config-file ] <path-to-file> | Расположение файла конфигурации клиента, если он не находится в одном из стандартных мест. См. Файлы конфигурации. | - |
--help | Вывести краткую справку по использованию и завершить работу. Используйте вместе с --verbose, чтобы показать все доступные параметры, включая настройки запроса. | - |
--history_file <path-to-file> | Путь к файлу, содержащему историю команд. | - |
--history_max_entries | Максимальное количество записей в файле истории. | 1000000 (1 миллион) |
--prompt <prompt> | Указать собственное приглашение командной строки. | display_name сервера |
--verbose | Увеличить подробность вывода. | - |
-V [ --version ] | Вывести версию и завершить работу. | - |
Параметры подключения
| настройка | Description | Default |
|---|---|---|
--connection <name> | Имя предварительно настроенного подключения из файла конфигурации. См. Учетные данные подключения. | - |
-d [ --database ] <database> | Выберите базу данных, которая будет использоваться по умолчанию для этого подключения. | Текущая база данных из настроек сервера (default по умолчанию) |
-h [ --host ] <host> | Имя хоста сервера ClickHouse, к которому нужно подключиться. Это может быть имя хоста, IPv4- или IPv6-адрес. Можно указать несколько хостов, передав аргумент несколько раз. | localhost |
--jwt <value> | Использовать JSON Web Token (JWT) для аутентификации. JWT-аутентификация на сервере доступна только в ClickHouse Cloud. | - |
login | Запускает OAuth-поток Device Grant для аутентификации через IdP. Для хостов ClickHouse Cloud параметры OAuth определяются автоматически, в противном случае их нужно указать через --oauth-url, --oauth-client-id и --oauth-audience. | - |
--no-warnings | Отключить показ предупреждений из system.warnings при подключении клиента к серверу. | - |
--no-server-client-version-message | Подавить сообщение о несовпадении версий сервера и клиента при подключении клиента к серверу. | - |
--password <password> | Пароль пользователя базы данных. Пароль для подключения также можно указать в файле конфигурации. Если пароль не указан, клиент запросит его. | - |
--port <port> | Порт, на котором сервер принимает подключения. Порты по умолчанию: 9440 (TLS) и 9000 (без TLS). Обратите внимание: клиент использует собственный протокол, а не HTTP(S). | 9440, если указан --secure, в противном случае 9000. Если имя хоста заканчивается на .clickhouse.cloud, по умолчанию всегда используется 9440. |
-s [ --secure ] | Использовать ли TLS. Автоматически включается при подключении к порту 9440 (защищенный порт по умолчанию) или к ClickHouse Cloud. Возможно, потребуется настроить CA‑сертификаты в файле конфигурации. Доступные настройки конфигурации такие же, как для конфигурации TLS на стороне сервера. | Автоматически включается при подключении к порту 9440 или к ClickHouse Cloud |
--ssh-key-file <path-to-file> | Файл, содержащий закрытый SSH-ключ для аутентификации на сервере. | - |
--ssh-key-passphrase <value> | Кодовая фраза для закрытого SSH-ключа, указанного в --ssh-key-file. | - |
--tls-sni-override <server name> | При использовании TLS — имя сервера (SNI), передаваемое во время рукопожатия. | Хост, указанный через -h или --host. |
-u [ --user ] <username> | Пользователь базы данных, от имени которого выполняется подключение. | default |
Вместо параметров --host, --port, --user и --password клиент также поддерживает строки подключения.
Параметры запроса
| настройка | Описание |
|---|---|
--param_<name>=<value> | Значение подстановки для параметра запроса с параметрами. |
-q [ --query ] <query> | Запрос для выполнения в пакетном режиме. Его можно указать несколько раз (--query "SELECT 1" --query "SELECT 2") либо один раз, перечислив несколько запросов через точку с запятой (--query "SELECT 1; SELECT 2;"). В последнем случае запросы INSERT с форматами, отличными от VALUES, должны быть разделены пустыми строками. Один запрос также можно указать без параметра: clickhouse-client "SELECT 1" Нельзя использовать вместе с --queries-file. |
--queries-file <path-to-file> | Путь к файлу с запросами. --queries-file можно указывать несколько раз, например: --queries-file queries1.sql --queries-file queries2.sql. Нельзя использовать вместе с --query. |
-m [ --multiline ] | Если указан, разрешает многострочные запросы (запрос не отправляется при нажатии Enter). Запросы будут отправляться только после завершения точкой с запятой. |
Настройки запроса
Настройки запроса можно указать в клиенте как параметры командной строки, например:
Список настроек см. в разделе Settings.
Параметры форматирования
| настройка | Description | Default |
|---|---|---|
-f [ --format ] <format> | Используйте указанный формат для вывода результата. Список поддерживаемых форматов см. в разделе Форматы входных и выходных данных. | TabSeparated |
--pager <command> | Передавайте весь вывод в эту команду. Обычно это less (например, less -S для отображения широких наборов результатов) или аналогичная команда. | - |
-E [ --vertical ] | Используйте формат Vertical для вывода результата. Это то же самое, что --format Vertical. В этом формате каждое значение выводится с новой строки, что удобно при отображении широких таблиц. | - |
Детали выполнения
| настройка | Описание | По умолчанию |
|---|---|---|
--enable-progress-table-toggle | Включить переключение таблицы прогресса по нажатию управляющей клавиши (Space). Применимо только в интерактивном режиме, когда включён вывод таблицы прогресса. | enabled |
--hardware-utilization | Выводить в индикаторе выполнения информацию об использовании аппаратных ресурсов. | - |
--memory-usage | Если указано, выводить использование памяти в stderr в неинтерактивном режиме. Возможные значения: • none - не выводить использование памяти • default - выводить количество байтов • readable - выводить использование памяти в удобочитаемом формате | - |
--print-profile-events | Выводить пакеты ProfileEvents. | - |
--progress | Выводить ход выполнения запроса. Возможные значения: • tty|on|1|true|yes - вывод в терминал в интерактивном режиме • err - вывод в stderr в неинтерактивном режиме • off|0|false|no - отключить вывод прогресса | tty в интерактивном режиме, off в неинтерактивном (batch) режиме |
--progress-table | Выводить таблицу прогресса с изменяющимися метриками во время выполнения запроса. Возможные значения: • tty|on|1|true|yes - вывод в терминал в интерактивном режиме • err - вывод в stderr в неинтерактивном режиме • off|0|false|no - отключить таблицу прогресса | tty в интерактивном режиме, off в неинтерактивном (batch) режиме |
--stacktrace | Выводить стеки вызовов исключений. | - |
-t [ --time ] | Выводить время выполнения запроса в stderr в неинтерактивном режиме (для бенчмарков). | - |