Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
Mysql
Le moteur MySQL vous permet d'effectuer SELECT
requêtes sur les données stockées sur un serveur MySQL distant.
Création d'une Table
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
...
) ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);
Voir une description détaillée de la CREATE TABLE requête.
La structure de la table peut différer de la structure de la table MySQL d'origine:
- Les noms de colonnes doivent être les mêmes que dans la table MySQL d'origine, mais vous pouvez utiliser seulement certaines de ces colonnes et dans n'importe quel ordre.
- Les types de colonnes peuvent différer de ceux de la table MySQL d'origine. ClickHouse essaie de jeter valeurs des types de données ClickHouse.
Les Paramètres Du Moteur
-
host:port
— MySQL server address. -
database
— Remote database name. -
table
— Remote table name. -
user
— MySQL user. -
password
— User password. -
replace_query
— Flag that convertsINSERT INTO
les requêtes deREPLACE INTO
. Sireplace_query=1
la requête est substitué. -
on_duplicate_clause
— TheON DUPLICATE KEY on_duplicate_clause
expression qui est ajoutée à laINSERT
requête.Exemple:
INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1
, oùon_duplicate_clause
êtreUPDATE c2 = c2 + 1
. Voir la Documentation de MySQL pour trouver lequelon_duplicate_clause
vous pouvez utiliser avec leON DUPLICATE KEY
clause.Spécifier
on_duplicate_clause
vous avez besoin de passer0
à l'replace_query
paramètre. Si vous passez simultanémentreplace_query = 1
eton_duplicate_clause
, Clickhouse génère une exception.
Simple WHERE
des clauses telles que =, !=, >, >=, <, <=
sont exécutés sur le serveur MySQL.
Le reste des conditions et le LIMIT
les contraintes d'échantillonnage sont exécutées dans ClickHouse uniquement après la fin de la requête à MySQL.
Exemple D'Utilisation
Table dans MySQL:
mysql> CREATE TABLE `test`.`test` (
-> `int_id` INT NOT NULL AUTO_INCREMENT,
-> `int_nullable` INT NULL DEFAULT NULL,
-> `float` FLOAT NOT NULL,
-> `float_nullable` FLOAT NULL DEFAULT NULL,
-> PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)
mysql> insert into test (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)
mysql> select * from test;
+------+----------+-----+----------+
| int_id | int_nullable | float | float_nullable |
+------+----------+-----+----------+
| 1 | NULL | 2 | NULL |
+------+----------+-----+----------+
1 row in set (0,00 sec)
Table dans ClickHouse, récupération des données de la table MySQL créée ci-dessus:
CREATE TABLE mysql_table
(
`float_nullable` Nullable(Float32),
`int_id` Int32
)
ENGINE = MySQL('localhost:3306', 'test', 'test', 'bayonet', '123')
SELECT * FROM mysql_table
┌─float_nullable─┬─int_id─┐
│ ᴺᵁᴸᴸ │ 1 │
└────────────────┴────────┘