Saltar al contenido principal
Permite conectarse a bases de datos en un servidor MySQL remoto y realizar consultas INSERT y SELECT para intercambiar datos entre ClickHouse y MySQL. El motor de base de datos MySQL traduce las consultas para el servidor MySQL, por lo que puede realizar operaciones como SHOW TABLES o SHOW CREATE TABLE. No se pueden realizar las siguientes consultas:
  • RENAME
  • CREATE TABLE
  • ALTER

Creación de una base de datos

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
Parámetros del motor
  • host:port — Dirección del servidor MySQL.
  • database — Nombre de la base de datos remota.
  • user — Usuario de MySQL.
  • password — Contraseña del usuario.

Compatibilidad de tipos de datos

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString
Todos los demás tipos de datos de MySQL se convierten a String. Se admite Nullable.

Compatibilidad con las variables globales

Para mejorar la compatibilidad, puede hacer referencia a las variables globales al estilo de MySQL, como @@identifier. Se admiten estas variables:
  • version
  • max_allowed_packet
Por ahora, estas variables son solo marcadores de posición y no corresponden a nada.
Ejemplo:
SELECT @@version;

Ejemplos de uso

Tabla en 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)
Base de datos de ClickHouse que intercambia datos con el servidor 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 │
└────────┴───────┘
Última modificación el 10 de junio de 2026