Использование клиента командной строки ClickHouse — clickhouse-client
Для подключения к ADQM можно использовать стандартный консольный клиент ClickHouse — clickhouse-client. После установки ADQM clickhouse-client доступен на каждом сервере кластера. Чтобы начать с ним работу, необходимо выполнить следующую команду:
$ clickhouse-client
Эта команда осуществляет соединение с локальным сервером ADQM (localhost:9000) от имени пользователя default без пароля.
$ clickhouse-client ClickHouse client version 22.8.4.7. Connecting to localhost:9000 as user default. Connected to ClickHouse server version 22.8.4 revision 54460. :)
Чтобы подключиться к удаленному серверу ADQM или задать имя пользователя, пароль и базу данных, отличные от значений по умолчанию, можно использовать следующие параметры команды clickhouse-client:
-
--host, -h— имя хоста, на котором расположен сервер ADQM; -
--port— порт для подключения; -
--user, -u— имя пользователя, от имени которого выполняется подключение; -
--password— пароль; -
--ask-password— предложение пользователю ввести пароль; -
--database, -d— текущая база данных. Если значение не указано, текущей будет база данных по умолчанию, которая создается при установке ADQM с помощью конфигурационного параметраDefault database(ADQMDB → Other → Default database).
Клиент может использоваться в интерактивном или пакетном (batch) режиме.
Чтобы воспроизвести приведенные ниже примеры, создайте предварительно следующие таблицы:
-
test_table1CREATE TABLE test_table1 (a Int32, b String, c Int32) ENGINE = MergeTree ORDER BY a;INSERT INTO test_table1 VALUES (1, 'aaa', 100), (2, 'bbb', 200), (3, 'ccc', 300), (4, 'ddd', 400), (5, 'eee', 500); -
test_table2CREATE TABLE test_table2 (a Int32, b String, c Int32) ENGINE = MergeTree ORDER BY a;INSERT INTO test_table2 VALUES (1, 'a', 0), (2, 'b', 0), (3, 'c', 0);
Интерактивный режим
После выполнения команды clickhouse-client терминал переключается в интерактивный режим работы с сервером ADQM и отображает приглашение для ввода запроса — :). Выполнение запроса осуществляется нажатием Enter (точка с запятой в конце запроса необязательна).
При выполнении команды clickhouse-client --multiline активируется многострочный режим ввода запроса. В этом случае чтобы выполнить запрос, необходимо завершить его точкой с запятой и нажать Enter. Если в конце введенной строки нет точки с запятой, при нажатии Enter предлагается ввести следующую строку запроса.
Ниже приведен пример ввода и выполнения запроса в интерактивном режиме консольного клиента.
Запрос:
SELECT * FROM test_table1;
Вывод на экран:
SELECT * FROM test_table1 Query id: 917d68af-6989-409e-a30f-89a657487e22 --a---b-------c-- │ 1 │ aaa │ 100 │ │ 2 │ bbb │ 200 │ │ 3 │ ccc │ 300 │ │ 4 │ ddd │ 400 │ │ 5 │ eee │ 500 │ ----------------- 5 rows in set. Elapsed: 0.001 sec.
При выполнении запроса клиент выводит на экран:
-
Прогресс выполнение запроса (для быстрых запросов может не отобразиться).
-
Отформатированный запрос после его парсинга.
-
ID запроса.
-
Результат в заданном формате. По умолчанию
clickhouse-clientв интерактивном режиме использует форматPrettyCompact. -
Количество строк результата и время выполнения.
Чтобы выйти из интерактивного режима консольного клиента, можно нажать Ctrl+D или ввести вместо запроса exit, quit, q или logout.
Пакетный режим
Клиент также можно использовать в пакетном (не интерактивном) режиме. Для этого можно:
-
Передать запрос в параметр
--queryкомандыclickhouse-client:$ clickhouse-client --query "SELECT * FROM test_table2"Пример вывода на экран:
1 a 0 2 b 0 3 c 0
-
Отправить запрос в stdin:
$ echo "SELECT * FROM test_table2" | clickhouse-clientПример вывода на экран:
1 a 0 2 b 0 3 c 0
-
Одновременно использовать параметр
--queryи stdin. Например, для запросовINSERTможно начало запроса написать в параметреquery, а вставляемые данные передать в stdin:$ echo "(4,'d',4)" | clickhouse-client --query "INSERT INTO test_table2 VALUES" $ clickhouse-client --query "SELECT * FROM test_table2"Пример вывода на экран:
1 a 0 2 b 0 3 c 0 4 d 4
По умолчанию в пакетном режиме можно выполнить только один запрос. Чтобы разрешить выполнение нескольких запросов, используется параметр –-multiquery (работает для всех запросов кроме INSERT). В этом случае в параметр --query можно передать строку, включающую несколько запросов, разделенных точкой с запятой. Например:
$ clickhouse-client --multiquery --query "select * from test_table1;select * from test_table2;"
В пакетном режиме для вывода результатов запроса по умолчанию используется формат TabSeparated. При выполнении нескольких запросов с использованием опции –-multiquery результаты запросов выводятся друг за другом без дополнительных разделителей. В следующем разделе приведены способы изменения формата вывода данных.
Формат вывода результатов запроса
Формат вывода результатов запроса можно задать следующими способами:
-
Указать нужный формат с помощью выражения
FORMATв запросе (указанный формат будет применяться для вывода результата данного запроса) или аргумента командной строки--format(этот формат будет использоваться по умолчанию для всех запросов). -
Указать
\Gв конце запроса или использовать параметр командной строки--vertical, чтобы использовать формат Vertical для отдельного запроса или всех запросов по умолчанию. -
Задать формат в конфигурационном файле клиента (/etc/clickhouse-client/config.xml).
Пример изменения формата вывода данных в пакетном режиме:
$ clickhouse-client --multiquery --query "select * from test_table1;select * from test_table2;" --format PrettyCompact
Вывод на экран:
--a---b-------c-- │ 1 │ aaa │ 100 │ │ 2 │ bbb │ 200 │ │ 3 │ ccc │ 300 │ │ 4 │ ddd │ 400 │ │ 5 │ eee │ 500 │ ----------------- --a---b---c-- │ 1 │ a │ 0 │ │ 2 │ b │ 0 │ │ 3 │ c │ 0 │ │ 4 │ d │ 4 │ -------------
Полную информацию об особенностях использования clickhouse-client можно получить в статье clickhouse-client документации ClickHouse.