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

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

Сохранение подключений в конфигурационном файле
Вы можете сохранять параметры подключения для одного или нескольких серверов ClickHouse в конфигурационном файле.
Формат выглядит так:
См. раздел о файлах конфигурации для получения дополнительной информации.
Чтобы сосредоточиться на синтаксисе запроса, в остальных примерах опущены параметры подключения (--host, --port и т.д.). Не забудьте добавить их, когда будете использовать команды.
Интерактивный режим
Использование интерактивного режима
Чтобы запустить ClickHouse в интерактивном режиме, достаточно выполнить:
Откроется интерактивная оболочка REPL (Read-Eval-Print Loop), где вы сможете вводить SQL-запросы. После подключения появится приглашение, куда можно вводить запросы:
В интерактивном режиме формат вывода по умолчанию — PrettyCompact.
Вы можете изменить формат в секции FORMAT запроса или, указав параметр командной строки --format.
Чтобы использовать формат Vertical, можно указать --vertical или добавить \G в конец запроса.
В этом формате каждое значение выводится на отдельной строке, что удобно для широких таблиц.
В интерактивном режиме по умолчанию при нажатии Enter выполняется всё введённое.
Точка с запятой в конце запроса необязательна.
Вы можете запустить клиент с параметром -m, --multiline.
Чтобы ввести многострочный запрос, введите обратную косую черту \ перед переводом строки.
После нажатия Enter вам будет предложено ввести следующую строку запроса.
Чтобы выполнить запрос, завершите его точкой с запятой и нажмите Enter.
ClickHouse Client основан на replxx (аналог библиотеки readline), поэтому он использует знакомые комбинации клавиш и ведёт историю.
История по умолчанию записывается в ~/.clickhouse-client-history.
Чтобы выйти из клиента, нажмите Ctrl+D или вместо запроса введите одну из следующих команд:
exitилиexit;quitилиquit;q,Qили:qlogoutилиlogout;
Информация об обработке запроса
При обработке запроса клиент показывает:
- Прогресс, который по умолчанию обновляется не чаще 10 раз в секунду. Для быстрых запросов прогресс может не успеть отобразиться.
- Отформатированный запрос после разбора — для отладки.
- Результат в указанном формате.
- Количество строк в результате, затраченное время и среднюю скорость обработки запроса. Все объёмы данных относятся к несжатым данным.
Долгий запрос можно отменить, нажав Ctrl+C.
Однако всё равно придётся немного подождать, пока сервер прервёт запрос.
На некоторых этапах выполнения отменить запрос невозможно.
Если не ждать и нажать Ctrl+C второй раз, клиент завершит работу.
Клиент ClickHouse позволяет передавать внешние данные (внешние временные таблицы) для выполнения запроса. Подробности см. в разделе External data for query processing.
Псевдонимы
Вы можете использовать следующие псевдонимы в REPL:
\l- SHOW DATABASES\d- SHOW TABLES\c <DATABASE>- USE DATABASE.- повторить последний запрос
Сочетания клавиш
Alt (Option) + Shift + e— открыть редактор с текущим запросом. Можно задать редактор с помощью переменной окруженияEDITOR. По умолчанию используетсяvim.Alt (Option) + #— закомментировать строку.Ctrl + r— приблизительный поиск по истории.
Полный список всех доступных сочетаний клавиш приведён в replxx.
Чтобы корректно настроить работу мета-клавиши (Option) в macOS:
iTerm2: перейдите в Preferences -> Profile -> Keys -> Left Option key и нажмите Esc+
Пакетный режим
Использование пакетного режима
Вместо интерактивного использования ClickHouse Client вы можете запускать его в пакетном режиме. В пакетном режиме ClickHouse выполняет один запрос и сразу завершает работу — без интерактивного режима или циклического ввода команд.
Один запрос можно задать следующим образом:
Можно также использовать опцию командной строки --query:
Вы можете передать запрос через стандартный ввод (stdin):
Если таблица messages уже существует, вы также можете вставлять данные из командной строки:
Когда указан параметр --query, любой введённый текст добавляется к запросу после символа перевода строки.
Загрузка CSV-файла в удалённый сервис ClickHouse
В этом примере демонстрируется вставка данных из CSV-файла cell_towers.csv в существующую таблицу cell_towers в базе данных default:
Примеры вставки данных из командной строки
Существует несколько способов вставки данных из командной строки. В следующем примере в таблицу 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)) (можно также использовать другие типы integer). Также можно передавать имя таблицы, имя базы данных и имена столбцов в качестве параметров; в этом случае необходимо использовать Identifier в качестве типа данных. |
Примеры
Генерация SQL с поддержкой ИИ
ClickHouse Client включает встроенный ИИ‑помощник для генерации SQL‑запросов по описаниям на естественном языке. Эта функция помогает пользователям составлять сложные запросы без глубоких знаний SQL.
ИИ‑помощник работает из коробки, если у вас установлена переменная окружения OPENAI_API_KEY или ANTHROPIC_API_KEY. Для более продвинутой конфигурации см. раздел Конфигурация.
Использование
Чтобы использовать генерацию SQL‑запросов с помощью ИИ, добавьте в начало запроса на естественном языке символы ??:
ИИ будет:
- Автоматически проанализирует схему вашей базы данных
- Сгенерирует соответствующий SQL на основе найденных таблиц и столбцов
- Сразу выполнит сгенерированный запрос
Пример
Конфигурация
Для генерации SQL с использованием ИИ необходимо настроить поставщика ИИ в конфигурационном файле клиента ClickHouse. Вы можете использовать OpenAI, Anthropic или любой API‑сервис, совместимый с OpenAI.
Резервный механизм на основе переменных окружения
Если конфигурация AI не задана в конфигурационном файле, ClickHouse Client автоматически попытается использовать переменные окружения:
- Сначала проверяется переменная окружения
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
Использование API, совместимых с OpenAI (например, OpenRouter):
Примеры минимальных конфигураций:
Параметры
Обязательные параметры
api_key- Ваш API-ключ для AI-сервиса. Можно опустить, если он задан через переменную окружения:- OpenAI:
OPENAI_API_KEY - Anthropic:
ANTHROPIC_API_KEY - Примечание: API-ключ в конфигурационном файле имеет приоритет над переменной окружения
- OpenAI:
provider- Провайдер AI: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)
Исследование схемы
enable_schema_access- Разрешить AI исследовать схемы баз данных (по умолчанию:true)max_steps- Максимальное количество шагов вызова инструментов при исследовании схемы (по умолчанию:10)
Параметры генерации
temperature- Управляет степенью случайности: 0.0 = детерминированно, 1.0 = более творческие ответы (по умолчанию:0.0)max_tokens- Максимальная длина ответа в токенах (по умолчанию:1000)system_prompt- Пользовательские инструкции для AI (необязательно)
Как это работает
Генератор SQL на основе ИИ использует многошаговый процесс:
Обнаружение схемы
ИИ использует встроенные инструменты для анализа вашей базы данных:
- Перечисляет доступные базы данных
- Обнаруживает таблицы в соответствующих базах данных
- Изучает структуры таблиц с помощью команд
CREATE TABLE
Генерация запроса
На основе обнаруженной схемы ИИ генерирует SQL, который:
- Соответствует вашему запросу на естественном языке
- Использует корректные имена таблиц и столбцов
- Применяет подходящие JOIN-операции и агрегации
Выполнение
Сгенерированный SQL автоматически выполняется, и результаты отображаются
Ограничения
- Требуется активное подключение к Интернету
- Использование API подчиняется ограничениям по частоте запросов и тарифам провайдера ИИ
- Для сложных запросов может потребоваться несколько итераций уточнения
- Модель ИИ имеет доступ только для чтения к сведениям о схеме, но не к реальным данным
Безопасность
- Ключи API никогда не отправляются на серверы ClickHouse
- ИИ получает доступ только к информации о схеме (именам таблиц/столбцов и типам), но не к реальным данным
- Все сгенерированные запросы соблюдают ваши действующие права доступа к базе данных
Строка подключения
Использование
ClickHouse Client также поддерживает, в качестве альтернативы, подключение к серверу 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 Client будет пытаться подключиться к этим хостам по порядку (слева направо). После установления соединения попытки подключения к оставшимся хостам не выполняются.
Строка подключения должна быть указана в качестве первого аргумента clickHouse-client.
Строку подключения можно комбинировать с произвольным количеством других опций командной строки, за исключением --host и --port.
Для query_parameters разрешены следующие ключи:
| Key | Description |
|---|---|
secure (or s) | Если указан, клиент будет подключаться к серверу по защищённому соединению (TLS). См. --secure в опциях командной строки. |
Процентное кодирование
Символы, не входящие в набор US-ASCII, пробелы и специальные символы в следующих параметрах должны быть закодированы в формате percent-encoding:
userpasswordhostsdatabasequery parameters
Примеры
Подключитесь к 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 (percent-encoding).
Подключитесь к одному из следующих хостов: 192.168.1.15, 192.168.1.25.
Формат идентификатора запроса
В интерактивном режиме ClickHouse Client показывает идентификатор для каждого выполняемого запроса. По умолчанию его формат следующий:
Произвольный формат может быть задан в файле конфигурации внутри тега query_id_formats. Заполнитель {query_id} в строке формата заменяется идентификатором запроса. Внутри тега может быть указано несколько форматных строк.
Эта возможность может использоваться для генерации URL-адресов, чтобы упростить профилирование запросов.
Пример
При указанной выше конфигурации идентификатор запроса отображается в следующем формате:
Файлы конфигурации
ClickHouse Client использует первый существующий файл из следующего списка:
- Файл, указанный параметром
-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> | Расположение файла конфигурации клиента, если он не находится ни в одном из стандартных путей. См. раздел Configuration Files. | - |
--help | Вывести краткую справку по использованию и завершить работу. Используйте вместе с --verbose для отображения всех возможных параметров, включая настройки запроса. | - |
--history_file <path-to-file> | Путь к файлу, содержащему историю команд. | - |
--history_max_entries | Максимальное количество записей в файле истории. | 1000000 (1 миллион) |
--prompt <prompt> | Задать пользовательскую строку приглашения. | display_name сервера |
--verbose | Увеличить подробность выходных сообщений. | - |
-V [ --version ] | Вывести версию и завершить работу. | - |
Параметры подключения
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
--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). Примечание: клиент использует собственный (native) протокол, а не HTTP(S). | 9440, если указан --secure, иначе 9000. Всегда по умолчанию 9440, если имя хоста оканчивается на .clickhouse.cloud. |
-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. | - |
-u [ --user ] <username> | Пользователь базы данных, от имени которого выполняется подключение. | default |
Вместо параметров --host, --port, --user и --password клиент также поддерживает строки подключения.
Параметры запросов
| Option | Description |
|---|---|
--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.
Параметры форматирования
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
-f [ --format ] <format> | Использовать указанный формат для вывода результата. Список поддерживаемых форматов см. в разделе Formats for Input and Output Data. | TabSeparated |
--pager <command> | Направить весь вывод в эту команду. Как правило, используется less (например, less -S для отображения широких наборов результатов) или аналогичная команда. | - |
-E [ --vertical ] | Использовать формат Vertical для вывода результата. То же, что и --format Vertical. В этом формате каждое значение выводится на отдельной строке, что удобно при отображении широких таблиц. | - |
Подробности выполнения
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
--enable-progress-table-toggle | Включает переключение таблицы прогресса при нажатии клавиши пробел. Применимо только в интерактивном режиме с включённым выводом таблицы прогресса. | 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 в неинтерактивном режиме (для бенчмарков). | - |