Перейти к основному содержанию
Перейти к основному содержанию

Движок базы данных MySQL

Not supported in ClickHouse Cloud

Позволяет подключаться к базам данных на удалённом сервере 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;
База данных изменена

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Запрос выполнен, затронуто строк: 0 (0,09 сек.)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Запрос выполнен, затронута 1 строка (0,00 сек.)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
Строк в результате: 1 (0,00 сек.)

База данных 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 │
└────────┴───────┘