Passer au contenu principal
ClickHouse fournit un client en ligne de commande natif permettant d’exécuter des requêtes SQL directement sur un serveur ClickHouse. Il prend en charge à la fois le mode interactif (pour l’exécution en direct des requêtes) et le mode batch (pour les scripts et l’automatisation). Les résultats des requêtes peuvent être affichés dans le terminal ou exportés vers un fichier, avec la prise en charge de tous les formats de sortie de ClickHouse, tels que Pretty, CSV, JSON, etc. Le client fournit un retour en temps réel sur l’exécution des requêtes grâce à une barre de progression, au nombre de lignes lues, au nombre d’octets traités et au temps d’exécution des requêtes. Il prend en charge à la fois les options de ligne de commande et les fichiers de configuration.

Installation

Pour télécharger ClickHouse, exécutez :
Pour l’installer également, exécutez :
Voir Installer ClickHouse pour découvrir d’autres options d’installation. Les différentes versions du client et du serveur sont compatibles entre elles, mais certaines fonctionnalités peuvent ne pas être disponibles dans les anciennes versions du client. Nous vous recommandons d’utiliser la même version pour le client et le serveur.

Exécuter

Si vous avez seulement téléchargé ClickHouse sans l’installer, utilisez ./clickhouse client au lieu de clickhouse-client.
Pour vous connecter à un serveur ClickHouse, exécutez :
Précisez des détails de connexion supplémentaires si nécessaire : Pour obtenir la liste complète des options de ligne de commande, voir Options de ligne de commande.

Se connecter à ClickHouse Cloud

Les informations de votre service ClickHouse Cloud sont disponibles dans la console ClickHouse Cloud. Sélectionnez le service auquel vous souhaitez vous connecter, puis cliquez sur Connect :

Choisissez Native : les informations de connexion s’affichent avec un exemple de commande clickhouse-client :

Stocker des connexions dans un fichier de configuration

Vous pouvez enregistrer les détails de connexion d’un ou de plusieurs serveurs ClickHouse dans un fichier de configuration. Le format est le suivant :
Voir la section sur les fichiers de configuration pour plus d’informations.
Afin de se concentrer sur la syntaxe des requêtes, les exemples suivants omettent les informations de connexion (--host, --port, etc.). N’oubliez pas de les ajouter lorsque vous utilisez ces commandes.

Mode interactif

Utilisation du mode interactif

Pour exécuter ClickHouse en mode interactif, il suffit d’exécuter :
Cela ouvre l’environnement Read-Eval-Print Loop (REPL), dans lequel vous pouvez commencer à saisir des requêtes SQL de manière interactive. Une fois connecté, une invite s’affiche et vous pouvez saisir des requêtes :
En mode interactif, le format de sortie par défaut est PrettyCompact. Vous pouvez modifier le format dans la clause FORMAT de la requête ou en spécifiant l’option de ligne de commande --format. Pour utiliser le format Vertical, vous pouvez utiliser --vertical ou ajouter \G à la fin de la requête. Dans ce format, chaque valeur est affichée sur une ligne distincte, ce qui est pratique pour les tables larges. En mode interactif, par défaut, tout ce que vous saisissez est exécuté lorsque vous appuyez sur Enter. Il n’est pas nécessaire de terminer la requête par un point-virgule. Vous pouvez démarrer le client avec le paramètre -m, --multiline. Pour saisir une requête sur plusieurs lignes, entrez une barre oblique inverse \ avant le retour à la ligne. Après avoir appuyé sur Enter, vous serez invité à saisir la ligne suivante de la requête. Pour exécuter la requête, terminez-la par un point-virgule et appuyez sur Enter. ClickHouse Client est basé sur replxx (similaire à readline), il utilise donc des raccourcis clavier familiers et conserve un historique. L’historique est écrit dans ~/.clickhouse-client-history par défaut. Pour quitter le client, appuyez sur Ctrl+D ou saisissez l’une des commandes suivantes à la place d’une requête :
  • exit ou exit;
  • quit ou quit;
  • q, Q ou :q
  • logout ou logout;

Informations sur le traitement des requêtes

Lors du traitement d’une requête, le client affiche :
  1. La progression, qui n’est, par défaut, pas mise à jour plus de 10 fois par seconde. Pour les requêtes rapides, elle peut ne pas avoir le temps de s’afficher.
  2. La requête mise en forme après l’analyse, à des fins de débogage.
  3. Le résultat dans le format spécifié.
  4. Le nombre de lignes du résultat, le temps écoulé et la vitesse moyenne de traitement de la requête. Tous les volumes de données se rapportent à des données non compressées.
Vous pouvez annuler une requête longue en appuyant sur Ctrl+C. Cependant, vous devrez tout de même attendre un peu que le serveur interrompe la requête. Il n’est pas possible d’annuler une requête à certaines étapes. Si vous n’attendez pas et appuyez une deuxième fois sur Ctrl+C, le client se fermera. ClickHouse Client permet de transmettre des données externes (tables temporaires externes) pour exécuter des requêtes. Pour plus d’informations, consultez la section Données externes pour le traitement des requêtes.

Aliases

Vous pouvez utiliser les alias suivants depuis le REPL :
  • \l - SHOW DATABASES
  • \d - SHOW TABLES
  • \c <DATABASE> - USE DATABASE
  • . - répéter la dernière requête

Raccourcis clavier

  • Alt (Option) + Shift + e - ouvre l’éditeur avec la requête en cours. Il est possible de définir l’éditeur à utiliser via la variable d’environnement EDITOR. Par défaut, vim est utilisé.
  • Alt (Option) + # - commenter la ligne.
  • Ctrl + r - recherche floue dans l’historique.
La liste complète des raccourcis clavier disponibles est consultable sur replxx.
Pour configurer correctement la touche Meta (Option) sur MacOS :iTerm2 : accédez à Preferences -> Profile -> Keys -> Left Option key, puis cliquez sur Esc+

Mode batch

Utiliser le mode batch

Au lieu d’utiliser le client ClickHouse en mode interactif, vous pouvez l’exécuter en mode batch. En mode batch, ClickHouse exécute une seule requête puis se ferme immédiatement - il n’y a ni invite interactive ni boucle. Vous pouvez spécifier une seule requête comme ceci :
Vous pouvez également utiliser l’option --query en ligne de commande :
Vous pouvez fournir une requête via stdin :
En supposant qu’une table messages existe, vous pouvez également insérer des données depuis la ligne de commande :
Lorsque --query est spécifié, toute entrée est ajoutée à la requête après un retour à la ligne.

Insertion d’un fichier CSV dans un service ClickHouse distant

Cet exemple insère un jeu de données CSV d’exemple, cell_towers.csv, dans la table existante cell_towers de la base de données default :

Exemples d’insertion de données en ligne de commande

Il existe plusieurs façons d’insérer des données en ligne de commande. L’exemple ci-dessous insère deux lignes de données CSV dans une table ClickHouse en mode batch :
Dans l’exemple ci-dessous, cat <<_EOF démarre un heredoc qui lit tout le contenu jusqu’à ce qu’il rencontre à nouveau _EOF, puis l’affiche :
Dans l’exemple ci-dessous, le contenu de file.csv est envoyé vers stdout à l’aide de cat, puis transmis à clickhouse-client via un pipe en entrée :
En mode batch, le format de données par défaut est TabSeparated. Vous pouvez définir le format dans la clause FORMAT de la requête, comme indiqué dans l’exemple ci-dessus.

Requêtes paramétrées

Vous pouvez définir des paramètres dans une requête et leur transmettre des valeurs à l’aide d’options en ligne de commande. Cela évite d’avoir à formater la requête avec des valeurs dynamiques spécifiques côté client. Par exemple :
Il est également possible de définir des paramètres dans une session interactive :

Syntaxe de la requête

Dans la requête, placez entre accolades les valeurs que vous souhaitez renseigner à l’aide des paramètres de ligne de commande, au format suivant :

Exemples

Génération SQL assistée par IA

ClickHouse Client inclut une assistance IA intégrée pour générer des requêtes SQL à partir de descriptions en langage naturel. Cette fonctionnalité permet aux utilisateurs de rédiger des requêtes complexes sans avoir besoin de connaissances approfondies en SQL. L’assistance IA fonctionne immédiatement si la variable d’environnement OPENAI_API_KEY ou ANTHROPIC_API_KEY est définie. Pour une configuration plus avancée, consultez la section Configuration.

Utilisation

Pour utiliser la génération SQL par IA, faites précéder votre requête en langage naturel de ?? :
L’IA va :
  1. Explorer automatiquement le schéma de votre base de données
  2. Générer une requête SQL adaptée en fonction des tables et des colonnes détectées
  3. Exécuter immédiatement la requête générée

Exemple

Configuration

La génération SQL par IA nécessite de configurer un fournisseur d’IA dans le fichier de configuration de votre client ClickHouse. Vous pouvez utiliser OpenAI, Anthropic ou tout service d’API compatible avec OpenAI.

Bascule de secours via l’environnement

Si aucune configuration d’IA n’est spécifiée dans le fichier de configuration, ClickHouse Client essaiera automatiquement d’utiliser les variables d’environnement :
  1. Vérifie d’abord la variable d’environnement OPENAI_API_KEY
  2. Si elle n’est pas trouvée, vérifie la variable d’environnement ANTHROPIC_API_KEY
  3. Si aucune des deux n’est trouvée, les fonctionnalités d’IA seront désactivées
Cela permet une configuration rapide sans fichier de configuration :

Fichier de configuration

Pour mieux maîtriser les paramètres de l’IA, configurez-les dans le fichier de configuration de votre ClickHouse Client, situé à l’un des emplacements suivants :
  • $XDG_CONFIG_HOME/clickhouse/config.xml (ou ~/.config/clickhouse/config.xml si XDG_CONFIG_HOME n’est pas défini) (format XML)
  • $XDG_CONFIG_HOME/clickhouse/config.yaml (ou ~/.config/clickhouse/config.yaml si XDG_CONFIG_HOME n’est pas défini) (format YAML)
  • ~/.clickhouse-client/config.xml (format XML, emplacement legacy)
  • ~/.clickhouse-client/config.yaml (format YAML, emplacement legacy)
  • Ou indiquez un emplacement personnalisé avec --config-file

Utilisation d’API compatibles OpenAI (par ex. OpenRouter) :
Exemples de configuration minimale :

Paramètres

  • api_key - Votre clé API pour le service d’IA. Peut être omise si elle est définie via une variable d’environnement :
    • OpenAI : OPENAI_API_KEY
    • Anthropic : ANTHROPIC_API_KEY
    • Remarque : la clé API du fichier de configuration prévaut sur la variable d’environnement
  • provider - Le fournisseur d’IA : openai ou anthropic
    • S’il est omis, le système utilise automatiquement les variables d’environnement disponibles
  • model - Le modèle à utiliser (par défaut : selon le fournisseur)
    • OpenAI : gpt-4o, gpt-4, gpt-3.5-turbo, etc.
    • Anthropic : claude-3-5-sonnet-20241022, claude-3-opus-20240229, etc.
    • OpenRouter : utilisez leur convention de nommage des modèles, par exemple anthropic/claude-3.5-sonnet
  • base_url - point de terminaison de l’API personnalisé pour les services compatibles OpenAI (facultatif)
  • timeout_seconds - Délai d’expiration de la requête, en secondes (par défaut : 30)
  • enable_schema_access - Autoriser l’IA à explorer les schémas de la base de données (par défaut : true)
  • max_steps - Nombre maximal d’étapes d’appel d’outils pour l’exploration du schéma (par défaut : 10)
  • temperature - Contrôle le niveau d’aléa, 0.0 = déterministe, 1.0 = créatif (par défaut : 0.0)
  • max_tokens - Longueur maximale de la réponse en tokens (par défaut : 1000)
  • system_prompt - Instructions personnalisées pour l’IA (facultatif)

Fonctionnement

Le générateur SQL par IA suit un processus en plusieurs étapes :
  1. Découverte du schéma
L’IA utilise des outils intégrés pour explorer votre base de données
  • Répertorie les bases de données disponibles
  • Identifie les tables dans les bases de données pertinentes
  • Examine la structure des tables à l’aide d’instructions CREATE TABLE
  1. Génération de requêtes
À partir du schéma découvert, l’IA génère du SQL qui :
  • Correspond à votre intention exprimée en langage naturel
  • Utilise les noms de tables et de colonnes corrects
  • Applique les jointures et agrégations appropriées
  1. Exécution
Le SQL généré est exécuté automatiquement et les résultats sont affichés

Limitations

  • Nécessite une connexion Internet active
  • L’utilisation de l’API est soumise aux limites de requêtes et aux coûts du fournisseur d’IA
  • Les requêtes complexes peuvent nécessiter plusieurs ajustements
  • L’IA a un accès en lecture seule aux informations de schéma, et non aux données elles-mêmes

Sécurité

  • Les clés API ne sont jamais envoyées aux serveurs ClickHouse
  • L’IA n’a accès qu’aux informations de schéma (noms des tables/colonnes et types), pas aux données elles-mêmes
  • Toutes les requêtes générées respectent les permissions existantes de votre base de données

Chaîne de connexion

Utilisation

ClickHouse Client prend également en charge la connexion à un serveur ClickHouse au moyen d’une chaîne de connexion semblable à celles de MongoDB, PostgreSQL et MySQL. La syntaxe est la suivante :

Remarques

Si le nom d’utilisateur, le mot de passe ou la base de données sont spécifiés dans la chaîne de connexion, ils ne peuvent pas l’être avec --user, --password ou --database (et inversement). La composante host peut être soit un nom d’hôte, soit une adresse IPv4 ou IPv6. Les adresses IPv6 doivent être entre [] :
Les chaînes de connexion peuvent contenir plusieurs hôtes. ClickHouse Client essaiera de se connecter à ces hôtes dans l’ordre (de gauche à droite). Une fois la connexion établie, il n’essaiera pas de se connecter aux hôtes restants. La chaîne de connexion doit être spécifiée comme premier argument de clickHouse-client. La chaîne de connexion peut être combinée avec n’importe quel nombre d’autres options de ligne de commande, à l’exception de --host et --port. Les clés suivantes sont autorisées pour query_parameters : Encodage en pourcentage Les caractères non ASCII, les espaces et les caractères spéciaux dans les paramètres suivants doivent être encodés en pourcentage :
  • user
  • password
  • hosts
  • database
  • query parameters

Exemples

Connectez-vous à localhost sur le port 9000 et exécutez la requête SELECT 1.
Connectez-vous à localhost avec l’utilisateur john, le mot de passe secret, l’hôte 127.0.0.1 et le port 9000
Connectez-vous à localhost avec l’utilisateur default, à l’hôte ayant l’adresse IPv6 [::1] et sur le port 9000.
Connectez-vous à localhost sur le port 9000 en mode multiligne.
Connectez-vous à localhost sur le port 9000 en tant qu’utilisateur default.
Connectez-vous à localhost sur le port 9000 et utilisez la base de données my_database par défaut.
Connectez-vous à localhost sur le port 9000, utilisez par défaut la base de données my_database spécifiée dans la chaîne de connexion et activez une connexion sécurisée à l’aide du paramètre abrégé s.
Connectez-vous à l’hôte par défaut à l’aide du port par défaut, de l’utilisateur default et de la base de données par défaut.
Connectez-vous à l’hôte par défaut via le port par défaut, avec l’utilisateur my_user et sans mot de passe.
Connectez-vous à localhost en utilisant l’adresse e-mail comme nom d’utilisateur. Le symbole @ est encodé au format pourcentage sous la forme %40.
Connectez-vous à l’une de ces deux adresses IP : 192.168.1.15, 192.168.1.25.

Format de l’identifiant de requête

En mode interactif, ClickHouse Client affiche l’identifiant de requête pour chaque requête. Par défaut, l’identifiant se présente ainsi :
Un format personnalisé peut être défini dans un fichier de configuration, à l’intérieur d’une balise query_id_formats. Le marqueur {query_id} dans la chaîne de format est remplacé par l’ID de la requête. Plusieurs chaînes de format sont autorisées à l’intérieur de la balise. Cette fonctionnalité peut être utilisée pour générer des URL afin de faciliter le profiling des requêtes. Exemple
Avec la configuration ci-dessus, l’identifiant d’une requête s’affiche au format suivant :

Fichiers de configuration

ClickHouse Client utilise le premier fichier existant dans la liste suivante :
  • Un fichier défini avec le paramètre -c [ -C, --config, --config-file ].
  • ./clickhouse-client.[xml|yaml|yml]
  • $XDG_CONFIG_HOME/clickhouse/config.[xml|yaml|yml] (ou ~/.config/clickhouse/config.[xml|yaml|yml] si XDG_CONFIG_HOME n’est pas défini)
  • ~/.clickhouse-client/config.[xml|yaml|yml]
  • /etc/clickhouse-client/config.[xml|yaml|yml]
Consultez l’exemple de fichier de configuration dans le dépôt ClickHouse : clickhouse-client.xml

Options des variables d’environnement

Le nom d’utilisateur, le mot de passe et l’hôte peuvent être définis à l’aide des variables d’environnement CLICKHOUSE_USER, CLICKHOUSE_PASSWORD et CLICKHOUSE_HOST. Les arguments de ligne de commande --user, --password ou --host, ou une chaîne de connexion (si elle est spécifiée), sont prioritaires sur les variables d’environnement.

Options en ligne de commande

Toutes les options en ligne de commande peuvent être spécifiées directement sur la ligne de commande ou définies par défaut dans le fichier de configuration.

Options générales

Options de connexion

Au lieu des options --host, --port, --user et --password, le client prend également en charge les chaînes de connexion.

Options de requête

Paramètres de requête

Les paramètres de requête peuvent être définis à l’aide d’options de ligne de commande dans le client, par exemple :
Voir Paramètres pour la liste des paramètres.

Options de formatage

Détails d’exécution

Dernière modification le 2 juillet 2026