Установка и clickhouse-client
Поднимаем ClickHouse за пару команд и пробуем первые запросы.
clickhouse-client — консольный клиент для интерактивной работы с сервером ClickHouse: вводите SQL, получаете результат в терминале.
Самый быстрый старт — Docker
Если у вас установлен Docker, поднять сервер можно одной командой:
# Запускаем сервер ClickHouse в фоне
docker run -d --name ch-server \
-p 8123:8123 -p 9000:9000 \
clickhouse/clickhouse-serverПорт 9000 — нативный протокол (для clickhouse-client), порт 8123 — HTTP-интерфейс (для curl и приложений).
Подключаемся клиентом
# Запускаем клиент внутри того же контейнера
docker exec -it ch-server clickhouse-clientПосле подключения появится приглашение, и можно вводить SQL:
SELECT version();
SELECT now();
SELECT 2 + 2 AS answer;Запросы по HTTP через curl
ClickHouse умеет отвечать на обычные HTTP-запросы — удобно для скриптов и проверки доступности:
# Простой запрос — данные в теле GET
curl 'http://localhost:8123/?query=SELECT%201'
# Запрос через POST (для длинных/многострочных)
curl 'http://localhost:8123/' --data-binary 'SELECT version()'В ответ придёт результат текстом. По умолчанию формат — TSV (значения через табы), но его можно менять через FORMAT.
Форматы вывода
ClickHouse поддерживает десятки форматов — это одна из его удобных черт. Допишите FORMAT в конце запроса:
SELECT 1 AS a, 'hi' AS b FORMAT JSON;
SELECT 1 AS a, 'hi' AS b FORMAT CSV;
SELECT 1 AS a, 'hi' AS b FORMAT Pretty;Pretty рисует таблицу рамками в терминале, JSON/CSV удобны для программ.
Как работает под капотом
Сервер ClickHouse — единый процесс, слушающий несколько портов: нативный бинарный протокол (быстрый, для клиента и кластера) и HTTP (универсальный, для всего остального). Клиент и сервер могут быть на разных машинах; в учебных целях оба живут в одном контейнере.
Частые ошибки
- Забыть пробросить порты. Без
-p 8123:8123 -p 9000:9000снаружи к серверу не подключиться. - Путать порты.
9000— для clickhouse-client,8123— для curl/HTTP. Подключение «не тем» портом даёт невнятные ошибки. - Слать многострочные запросы через GET. Для больших запросов используйте POST с
--data-binary.
Итоги
- Docker — самый простой способ поднять ClickHouse локально.
- clickhouse-client (порт 9000) — для интерактивной работы.
- HTTP-интерфейс (порт 8123) — для curl, скриптов и приложений.
FORMATуправляет тем, как выводится результат.