Un IDE SQL complet qui s’exécute entièrement dans votre terminal. Offre coloration syntaxique, autocomplétion, une barre latérale de catalogue de données, plusieurs adaptateurs de bases de données et exportation de résultats — aucune interface graphique nécessaire.
| Méthode | Commande |
|---|
| uv (Recommandé) | uv tool install harlequin |
| pip | pip install harlequin |
| pipx | pipx install harlequin |
| Homebrew | brew install harlequin |
| Poetry | poetry add harlequin |
# DuckDB (intégré, pas d'installation supplémentaire nécessaire)
uv tool install harlequin
# Adaptateur SQLite
uv tool install 'harlequin[sqlite]'
# Adaptateur PostgreSQL
uv tool install 'harlequin[postgres]'
# Adaptateur MySQL
uv tool install 'harlequin[mysql]'
# Plusieurs adaptateurs à la fois
uv tool install 'harlequin[postgres,mysql,sqlite,s3]'
Prérequis : Python 3.9+
| Commande | Description |
|---|
harlequin | Ouvrir avec base de données DuckDB en mémoire |
harlequin mydb.duckdb | Ouvrir un fichier de base de données DuckDB |
harlequin -a sqlite mydb.db | Ouvrir une base de données SQLite |
harlequin -a sqlite | Ouvrir une base de données SQLite en mémoire |
harlequin -a postgres -h localhost -p 5432 -U user -d mydb | Se connecter à PostgreSQL |
harlequin -a mysql -h localhost -u root mydb | Se connecter à MySQL |
harlequin --theme monokai | Utiliser un thème de couleur spécifique |
harlequin --locale en_US | Définir la locale de formatage des nombres |
harlequin --help | Afficher toutes les options CLI |
| Touche | Description |
|---|
Ctrl+Enter | Exécuter la requête courante |
Ctrl+j | Exécuter la requête courante (alternative) |
Ctrl+o | Ouvrir un fichier SQL |
Ctrl+s | Sauvegarder la requête courante dans un fichier |
Ctrl+n | Nouvel onglet de requête |
Ctrl+w | Fermer l’onglet de requête courant |
Ctrl+k | Basculer vers l’onglet de requête suivant |
Tab | Accepter la suggestion d’autocomplétion |
Escape | Fermer le menu d’autocomplétion |
F1 | Afficher l’aide / documentation contextuelle |
| Touche | Description |
|---|
Ctrl+r | Basculer le focus vers le panneau de résultats |
Ctrl+e | Basculer le focus vers l’éditeur de requêtes |
| Touches fléchées | Naviguer dans le tableau de résultats |
Ctrl+c | Copier la ou les cellules sélectionnées |
| Touche | Description |
|---|
Ctrl+q | Quitter Harlequin |
Ctrl+b | Basculer la barre latérale du catalogue de données |
F1 | Aide |
DuckDB est l’adaptateur par défaut et supporte des fonctionnalités puissantes :
-- Lire des fichiers CSV directement
SELECT * FROM read_csv_auto('data.csv');
-- Lire des fichiers Parquet
SELECT * FROM read_parquet('data.parquet');
-- Lire des fichiers JSON
SELECT * FROM read_json_auto('data.json');
-- Interroger des fichiers distants
SELECT * FROM read_csv_auto('https://example.com/data.csv');
-- Interroger des fichiers S3 (avec adaptateur s3)
SELECT * FROM read_parquet('s3://bucket/data.parquet');
-- Agréger des données de plusieurs fichiers
SELECT * FROM read_csv_auto('logs/*.csv');
Créez un fichier de configuration pour sauvegarder les profils de connexion fréquemment utilisés :
# ~/.config/harlequin/config.toml
# (ou utilisez le flag --config pour spécifier le chemin)
[profiles.local-pg]
adapter = "postgres"
host = "localhost"
port = 5432
user = "myuser"
database = "mydb"
[profiles.prod-readonly]
adapter = "postgres"
host = "prod-db.example.com"
port = 5432
user = "readonly"
database = "production"
theme = "monokai"
[profiles.duckdb-analytics]
adapter = "duckdb"
conn_str = ["analytics.duckdb"]
Utiliser les profils avec :
harlequin --profile local-pg
| Adaptateur | Extra d’Installation | Exemple de Connexion |
|---|
| DuckDB | (intégré) | harlequin data.duckdb |
| SQLite | sqlite | harlequin -a sqlite data.db |
| PostgreSQL | postgres | harlequin -a postgres -h host -U user -d db |
| MySQL | mysql | harlequin -a mysql -h host -u user db |
| S3 / GCS | s3 | Parquet/CSV sur stockage cloud |
| ODBC | odbc | Connexions ODBC génériques |
| Trino | trino | Clusters Trino/Presto |
| BigQuery | bigquery | Google BigQuery |
| Cassandra | cassandra | Apache Cassandra |
| ClickHouse | clickhouse | Bases de données ClickHouse |
| MotherDuck | (via DuckDB) | DuckDB cloud |
# Exploration rapide de données — ouvrir un CSV comme base de données
harlequin
# Puis dans l'éditeur de requêtes : SELECT * FROM read_csv_auto('data.csv') LIMIT 100;
# Explorer une base de données SQLite (ex. une DB d'application mobile)
harlequin -a sqlite app.db
# Se connecter à Postgres local pour le développement
harlequin -a postgres -h localhost -p 5432 -U dev -d myapp_dev
# Analyser des fichiers Parquet sans les charger dans une base de données
harlequin
# Puis : SELECT * FROM read_parquet('output/*.parquet');
# Installer django-harlequin
pip install django-harlequin
# Lancer Harlequin connecté à votre DB Django
./manage.py harlequin
| Problème | Solution |
|---|
| Adaptateur introuvable | Installer avec extras : uv tool install 'harlequin[postgres]' |
| Connexion refusée | Vérifier l’hôte, le port, et que le serveur de base de données est en cours d’exécution |
| Problèmes d’affichage | Essayer un terminal différent (Kitty, WezTerm, iTerm2 recommandés) |
| Lenteur sur grandes tables | Utiliser LIMIT dans les requêtes ; éviter SELECT * sur d’énormes tables |
| Autocomplétion manquante | Assurez-vous d’être connecté à une base de données avec un schéma |
| Fonctionnalité | Harlequin | DBeaver | pgcli | usql |
|---|
| S’exécute dans le terminal | Oui | Non (GUI) | Oui | Oui |
| Multi-base de données | Oui | Oui | Postgres uniquement | Oui |
| Autocomplétion | Oui | Oui | Oui | Non |
| Tableau de résultats visuel | Oui | Oui | Basique | Basique |
| Requêtes de fichiers (CSV, Parquet) | Oui (DuckDB) | Limité | Non | Non |
| Profils de configuration | Oui | Oui | Oui | Non |