Клиент командной строки

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. В этом формате каждое значение выводится на отдельной строке, что удобно для широких таблиц.
Командная строка выполнена на основе readlinehistory) (или 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"

Формат ID запроса

В интерактивном режиме 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>
Предыдущий раздел
Сжатие
Следующий раздел
Интерфейс gRPC
Была ли страница полезной?