Перейти к основному содержанию
Позволяет подключаться к базам данных на удалённом сервере MySQL и выполнять запросы INSERT и SELECT для обмена данными между ClickHouse и MySQL. Движок базы данных MySQL передаёт запросы на сервер MySQL, поэтому вы можете выполнять такие операции, как SHOW TABLES или SHOW CREATE TABLE. Следующие запросы не поддерживаются:
  • RENAME
  • CREATE TABLE
  • ALTER

Создание базы данных

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
Параметры движка
  • host:port — адрес сервера MySQL.
  • database — имя удалённой базы данных.
  • user — имя пользователя MySQL.
  • password — пароль пользователя.

Поддерживаемые типы данных

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString
Все остальные типы данных MySQL преобразуются в String. Тип Nullable поддерживается.

Поддержка глобальных переменных

Для лучшей совместимости к глобальным переменным можно обращаться в стиле MySQL — как @@identifier. Поддерживаются следующие переменные:
  • version
  • max_allowed_packet
На данный момент эти переменные являются заглушками и ни с чем не связаны.
Пример:
SELECT @@version;

Примеры использования

Таблица в MySQL:
mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)
База данных в ClickHouse, которая обменивается данными с сервером MySQL:
CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
SHOW DATABASES
┌─name─────┐
│ default  │
│ mysql_db │
│ system   │
└──────────┘
SHOW TABLES FROM mysql_db
┌─name─────────┐
│  mysql_table │
└──────────────┘
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
└────────┴───────┘
INSERT INTO mysql_db.mysql_table VALUES (3,4)
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
Последнее изменение 10 июня 2026 г.