Pular para o conteúdo principal
Permite conectar-se a bancos de dados em um servidor MySQL remoto e executar consultas INSERT e SELECT para transferir dados entre o ClickHouse e o MySQL. O mecanismo de banco de dados MySQL traduz consultas para o servidor MySQL, para que você possa executar operações como SHOW TABLES ou SHOW CREATE TABLE. Não é possível executar as seguintes consultas:
  • RENAME
  • CREATE TABLE
  • ALTER

Criar um banco de dados

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
Parâmetros do mecanismo
  • host:port — Endereço do servidor MySQL.
  • database — Nome do banco de dados remoto.
  • user — Usuário do MySQL.
  • password — Senha do usuário.

Suporte a tipos de dados

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString
Todos os outros tipos de dados do MySQL são convertidos em String. Há suporte para Nullable.

Suporte a variáveis globais

Para maior compatibilidade, é possível referenciar variáveis globais no estilo do MySQL, como @@identifier. Há suporte para estas variáveis:
  • version
  • max_allowed_packet
No momento, essas variáveis são apenas placeholders e não correspondem a nada.
Exemplo:
SELECT @@version;

Exemplos de uso

Tabela no 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)
Banco de dados no ClickHouse, com troca de dados com o 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 modificação em 10 de junho de 2026