Использование клиента командной строки 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_table1

    CREATE 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_table2

    CREATE 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.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней