Клиент командной строки
ADQM предоставляет собственный клиент командной строки:
clickhouse-client
. Клиент поддерживает запуск с аргументами командной строки и с конфигурационными файлами.Клиент устанавливается пакетом
clickhouse-client
и запускается командой clickhouse-client
.Пример$ clickhouse-client Clickhouse client version 20.13.1.5273 (official build). Connecting to localhost:9000 as user default. Connected to Clickhouse server version 20.13.1 revision 54442.
Клиент может быть использован в интерактивном и неинтерактивном (batch) режиме. Чтобы использовать batch-режим, укажите параметр
query
, или отправьте данные в stdin
(проверяется, что stdin
- не терминал), или и то, и другое. Аналогично HTTP-интерфейсу при использовании одновременно параметра query
и отправки данных в stdin
запрос составляется из конкатенации параметра query
, перевода строки и данных в stdin
. Это удобно для больших INSERT-запросов.Примеры использования клиента для вставки данных$ echo -ne "1, 'some text', '2016-08-14 00:00:00'\n2, 'some more text', '2016-08-14 00:00:01'" | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV"; $ cat <<_EOF | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV"; 3, 'some text', '2016-08-14 00:00:00' 4, 'some more text', '2016-08-14 00:00:01' _EOF $ cat file.csv | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";
В batch-режиме в качестве формата данных по умолчанию используется формат
TabSeparated
и можно выполнить только один запрос. Формат может быть указан в запросе в секции FORMAT
. Чтобы выполнить несколько запросов из скрипта, используйте параметр multiquery
. Это работает для всех запросов, кроме INSERT
. Результаты запросов выводятся подряд без дополнительных разделителей. Если нужно выполнить несколько запросов, можно запускать clickhouse-client
отдельно на каждый запрос.В интерактивном режиме запросы вводятся через командную строку:
-
чтобы выполнить запрос, нажмите Enter. Точка с запятой (
$
) в конце запроса необязательна. Чтобы ввести запрос, состоящий из нескольких строк, в конце строки поставьте обратный слеш (\
) и после нажатия Enter введите следующую строку запроса; -
чтобы выполнить запрос, завершите его точкой с запятой и нажмите Enter. Если в конце введённой строки не было точки с запятой, то будет предложено ввести следующую строку запроса.
Исполняется только один запрос, поэтому всё, что введено после точки с запятой, игнорируется.
Вместо или после точки с запятой может быть указано
\G
. Это обозначает использование формата Vertical
. В этом формате каждое значение выводится на отдельной строке, что удобно для широких таблиц.Командная строка выполнена на основе
readline
(и history
) (или libedit
, или без какой - либо библиотеки, в зависимости от сборки) - то есть, в ней работают привычные сочетания клавиш, история действий пишется в ~/.clickhouse-client-history
.По умолчанию используется формат вывода
PrettyCompact
. Изменить формат вывода результатов запроса следующими способами: с помощью секции FORMAT
в запросе, указав символ \G
в конце запроса, используя аргументы командной строки --format
или --vertical
или с помощью конфигурационного файла клиента.Чтобы выйти из клиента, нажмите
Ctrl+D
.Чтобы прервать запрос, нажмите
Ctrl+C
. Для прерывания запроса серверу потребуется время. На некоторых стадиях выполнения запрос невозможно прервать. Если, не дожидаясь прерывания запроса, нажать Ctrl+C
повторно, то клиент будет завершён.Можно создавать запросы с параметрами и передавать в них значения из приложения. Это позволяет избежать форматирования запросов на стороне клиента, если известно, какие из параметров запроса динамически меняются. Например:
clickhouse-client --param_parName="[1, 2]" -q "SELECT * FROM table WHERE a = {parName:Array(UInt16)}"
.Также возможно устанавливать значения параметров, находясь внутри интерактивной сессии.
Пример`$ clickhouse-client -nq " SET param_parName='[1, 2]'; SELECT {parName:Array(UInt16)}"`
Отформатируйте запрос - укажите значения, передаваемые из параметров приложения значения в запрос, в следующем формате:
{<name>:<data type>}
name
- идентификатор подстановки. В консольном клиенте его следует использовать как часть имени параметра--param_<name> = value
;data type
— тип данных значения. Например, структура данных(integer, ('string', integer))
может иметь тип данныхTuple(UInt8, Tuple(String, UInt8))
(целочисленный тип может быть и другим). В качестве параметра можно передать название столбца, таблицы и базы данных, в этом случае используется тип данныхIdentifier
.
Пример$ clickhouse-client --param_tuple_in_tuple="(10, ('dt', 10))" -q "SELECT * FROM table WHERE val = {tuple_in_tuple:Tuple(UInt8, Tuple(String, UInt8))}" $ clickhouse-client --param_tbl="numbers" --param_db="system" --param_col="number" --query "SELECT {col:Identifier} FROM {db:Identifier}.{tbl:Identifier} LIMIT 10"
В интерактивном режиме
clickhouse-client
показывает ID для каждого запроса. По умолчанию ID выводится в виде Query id: 927f137d-00f1-4175-8914-0dd066365e96
.Произвольный формат ID можно задать в конфигурационном файле внутри тега
query_id_formats
. ID подставляется вместо {query_id}
в строке формата. В теге может быть перечислено несколько строк формата. Эта возможность может быть полезна для генерации URL, с помощью которых выполняется профилирование запросов.Пример<config> <query_id_formats> <speedscope>http://speedscope-host/#profileURL=qp%3Fid%3D{query_id}</speedscope> </query_id_formats> </config>