SELECT et INSERT sur des données stockées sur un serveur MySQL distant.
Syntaxe
Arguments
Les arguments peuvent également être transmis à l’aide de collections nommées. Dans ce cas,
host et port doivent être spécifiés séparément. Cette approche est recommandée en environnement de production.
Les clauses WHERE simples telles que =, !=, >, >=, <, <= sont actuellement exécutées sur le serveur MySQL.
Le reste des conditions et la contrainte d’échantillonnage LIMIT ne sont exécutés dans ClickHouse qu’une fois la requête MySQL terminée.
Utilisation d’une requête à la place d’un nom de table
SELECT transmise à MySQL telle quelle. La structure de la table résultante est inférée à partir du résultat de la requête. La requête peut être écrite soit sous forme de sous-requête, soit encapsulée dans la fonction query :
INSERT n’y est pas autorisé. La même syntaxe est prise en charge par le moteur de table MySQL.
La forme de sous-requête
(SELECT ...) est analysée par ClickHouse, puis re-sérialisée dans le dialecte MySQL (identifiants délimités par des accents graves) avant d’être envoyée au serveur. Elle doit donc être valide en ClickHouse SQL. Pour transmettre une syntaxe propre à MySQL que ClickHouse n’analyse pas, utilisez la forme query('...'), dont le texte est envoyé à MySQL tel quel.Tout WHERE, LIMIT, agrégation, etc. externe de la requête ClickHouse englobante n’est pas déporté dans la requête transmise — il est appliqué dans ClickHouse après récupération du résultat complet de la requête. Pour restreindre les données lues depuis MySQL, placez le filtre dans la requête transmise. Avec external_table_strict_query = 1, un filtre externe qui ne peut pas être déporté est rejeté avec une exception au lieu d’être appliqué localement.|. Par exemple :
Valeur retournée
Certains types de données MySQL peuvent correspondre à différents types de ClickHouse ; cela est géré par le paramètre au niveau de la requête mysql_datatypes_support_level
Dans la requête
INSERT, pour distinguer la fonction de table mysql(...) d’un nom de table accompagné d’une liste de noms de colonnes, vous devez utiliser les mots-clés FUNCTION ou TABLE FUNCTION. Voir les exemples ci-dessous.Exemples
enable_compression
false.
Ce paramètre s’applique à :
- la fonction de table
mysql; - le moteur de table
MySQL; - le moteur de base de données
MySQL; - les collections nommées utilisées par les intégrations MySQL.