Установка
Запуск
Если вы только скачали ClickHouse, но не установили его, используйте
./clickhouse client вместо clickhouse-client.| Параметр | Описание |
|---|---|
--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
Выберите Native — отобразятся сведения о подключении и пример команды
clickhouse-client:
Хранение подключений в файле конфигурации
Чтобы сосредоточиться на синтаксисе запроса, в остальных примерах опущены сведения о подключении (
--host, --port и т. д.). Не забудьте добавить их при использовании команд.Интерактивный режим
Использование интерактивного режима
PrettyCompact.
Вы можете изменить формат в предложении FORMAT запроса или с помощью параметра командной строки --format.
Чтобы использовать формат Vertical, можно указать --vertical или добавить \G в конце запроса.
В этом формате каждое значение выводится на отдельной строке, что удобно для широких таблиц.
В интерактивном режиме по умолчанию всё введённое выполняется при нажатии Enter.
Точка с запятой в конце запроса не обязательна.
Вы можете запустить клиент с параметром -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 позволяет передавать внешние данные (внешние временные таблицы) для выполнения запросов.
Подробнее см. в разделе Внешние данные для обработки запроса.
Псевдонимы
\l- SHOW DATABASES\d- SHOW TABLES\c <DATABASE>- USE DATABASE.- повторить последний запрос
Сочетания клавиш
Alt (Option) + Shift + e— открыть редактор с текущим запросом. Редактор можно задать с помощью переменной окруженияEDITOR. По умолчанию используетсяvim.Alt (Option) + #— закомментировать строку.Ctrl + r— поиск по истории с нечётким совпадением.
Пакетный режим
Работа в пакетном режиме
--query:
stdin:
messages уже существует, вы также можете вставить данные из командной строки:
--query, все входные данные добавляются к запросу после символа перевода строки.
Вставка CSV-файла в удалённый сервис ClickHouse
cell_towers.csv вставляется в существующую таблицу cell_towers в базе данных default:
Примеры вставки данных из командной строки
cat <<_EOF начинает конструкцию heredoc, которая считывает всё до следующего появления _EOF, а затем выводит это:
cat, а затем через конвейер передаётся на вход clickhouse-client:
TabSeparated.
Вы можете указать формат в предложении FORMAT запроса, как показано в примере выше.
Запросы с параметрами
Синтаксис запроса
| Параметр | Описание |
|---|---|
name | Идентификатор подстановки. Соответствующая опция командной строки — --param_<name> = value. |
data type | Тип данных параметра. Например, структура данных вида (integer, ('string', integer)) может иметь тип данных Tuple(UInt8, Tuple(String, UInt8)) (также можно использовать и другие типы integer). В качестве параметров также можно передавать имя таблицы, имя базы данных и имена столбцов; в этом случае в качестве типа данных нужно использовать Identifier. |
Примеры
Генерация SQL с помощью ИИ
OPENAI_API_KEY или ANTHROPIC_API_KEY. Более подробную информацию о расширенной настройке см. в разделе Configuration.
Использование
?? перед запросом на естественном языке:
- Автоматически изучать схему вашей базы данных
- Генерировать подходящий SQL на основе обнаруженных таблиц и столбцов
- Сразу выполнять сгенерированный запрос
Пример
Конфигурация
Резервный вариант через переменные окружения
- Сначала проверяется переменная окружения
OPENAI_API_KEY - Если она не найдена, проверяется переменная окружения
ANTHROPIC_API_KEY - Если не найдена ни одна из них, возможности AI будут отключены
Файл конфигурации
$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-ключ для сервиса ИИ. Можно не указывать, если он задан через переменную окружения:- 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)
Исследование схемы
Исследование схемы
enable_schema_access- Разрешить ИИ просматривать схемы базы данных (по умолчанию:true)max_steps- Максимальное количество шагов вызова инструментов для исследования схемы (по умолчанию:10)
Параметры генерации
Параметры генерации
temperature- Управляет степенью случайности: 0.0 = детерминированно, 1.0 = креативно (по умолчанию:0.0)max_tokens- Максимальная длина ответа в токенах (по умолчанию:1000)system_prompt- Пользовательские инструкции для ИИ (необязательно)
Как это работает
- Определение схемы
- Перечисляет доступные базы данных
- Находит таблицы в соответствующих базах данных
- Анализирует структуру таблиц с помощью операторов
CREATE TABLE
- Генерация запроса
- Соответствует вашему запросу на естественном языке
- Использует правильные имена таблиц и столбцов
- Применяет подходящие JOIN и агрегации
- Выполнение
Ограничения
- Требуется активное подключение к интернету
- На использование API распространяются ограничения по частоте запросов, а также взимается плата со стороны поставщика ИИ
- Для сложных запросов может потребоваться несколько уточнений
- ИИ имеет доступ только для чтения к информации о схеме, но не к фактическим данным
Безопасность
- Ключи API никогда не отправляются на серверы ClickHouse
- AI видит только информацию о схеме (имена таблиц/столбцов и типы), а не сами данные
- Все сгенерированные запросы учитывают ваши текущие разрешения на доступ к базе данных
Строка подключения
Использование
| Компонент (все поля необязательны) | Описание | По умолчанию |
|---|---|---|
user | Имя пользователя database. | default |
password | Пароль пользователя database. Если указан : и пароль пустой, клиент предложит ввести пароль пользователя. | - |
hosts_and_ports | Список хостов и необязательных портов host[:port] [, host:[port]], .... | localhost:9000 |
database | Имя database. | default |
query_parameters | Список пар ключ-значение param1=value1[,¶m2=value2], .... Для некоторых параметров значение не требуется. Имена параметров и их значения чувствительны к регистру. | - |
Примечания
--user, --password или --database (и наоборот).
Компонент host может быть как именем хоста, так и адресом IPv4 или IPv6.
Адреса IPv6 должны быть заключены в []:
clickHouse-client.
Строку подключения можно сочетать с любым количеством других параметров командной строки, кроме --host и --port.
Для query_parameters допустимы следующие ключи:
| Key | Description |
|---|---|
secure (or s) | Если указан этот ключ, клиент подключится к серверу по защищённому соединению (TLS). См. --secure в разделе параметры командной строки. |
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 при процентном кодировании.
192.168.1.15, 192.168.1.25.
Формат Query id
query_id_formats. Заполнитель {query_id} в строке формата заменяется идентификатором запроса. Внутри тега допускается несколько строк формата.
Эту возможность можно использовать для генерации URL-адресов, облегчающих анализ данных профилирования запросов.
Пример
Файлы конфигурации
- Файл, указанный параметром
-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-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 ] | Вывести версию и завершить работу. | - |
Параметры подключения
| Option | Description | Default |
|---|---|---|
--connection <name> | Имя заранее настроенного подключения из файла конфигурации. См. Учетные данные подключения. | - |
-d [ --database ] <database> | Выбрать базу данных, которая будет использоваться по умолчанию для этого подключения. | Текущая база данных из настроек сервера (default по умолчанию) |
-h [ --host ] <host> | Имя хоста ClickHouse server, к которому нужно подключиться. Это может быть как имя хоста, так и адрес IPv4 или IPv6. Можно указать несколько хостов, передав этот аргумент несколько раз. | localhost |
--jwt <value> | Использовать JSON Web Token (JWT) для аутентификации. JWT-авторизация на стороне сервера доступна только в ClickHouse Cloud. | - |
login | Запускает OAuth device grant flow для аутентификации через 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 клиент также поддерживает строки подключения.Параметры запроса
| Option | Description |
|---|---|
--param_<name>=<value> | Значение подстановки для параметра в запросе с параметрами. |
-q [ --query ] <query> | Запрос для выполнения в batch mode. Можно указать этот параметр несколько раз (--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). Запросы отправляются только после завершения точкой с запятой. |
--inline-insert-data | Отправлять INSERT ... VALUES (и другие inline-форматы) как есть в тексте запроса вместо преобразования данных в блоки в native format. Сервер сам разбирает inline-данные, что позволяет избежать обратной передачи клиенту структуры таблицы и значений столбцов по умолчанию. Это может повысить производительность при большом количестве небольших вставок через собственный протокол. Автоматически устанавливает send_table_structure_on_insert_with_inline_data в 0. Нельзя использовать одновременно с inline-данными и внешними данными (из stdin или INFILE). |
Настройки запроса
Параметры форматирования
| Option | Description | Default |
|---|---|---|
-f [ --format ] <format> | Использовать указанный формат для вывода результата. Список поддерживаемых форматов см. в разделе Форматы входных и выходных данных. | TabSeparated |
--pager <command> | Передавать весь вывод в эту команду. Обычно это less (например, less -S для отображения широких результирующих наборов) или аналогичная команда. | - |
-E [ --vertical ] | Использовать Вертикальный формат для вывода результата. Это то же самое, что и –-format Vertical. В этом формате каждое значение выводится с новой строки, что удобно при отображении широких таблиц. | - |
Подробности выполнения
| Параметр | Описание | По умолчанию |
|---|---|---|
--enable-progress-table-toggle | Включить переключение таблицы прогресса по нажатию управляющей клавиши (Space). Применяется только в интерактивном режиме, когда включен вывод таблицы прогресса. | включенный |
--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 в неинтерактивном (батч) режиме |
--progress-table | Выводить таблицу прогресса с изменяющимися метриками во время выполнения запроса. Возможные значения: • tty|on|1|true|yes - выводить в терминал в интерактивном режиме • err - выводить в stderr в неинтерактивном режиме • off|0|false|no - отключить таблицу прогресса | tty в интерактивном режиме, off в неинтерактивном (батч) режиме |
--stacktrace | Выводить трассировки стека для исключений. | - |
-t [ --time ] | Выводить время выполнения запроса в stderr в неинтерактивном режиме (для бенчмарков). | - |