Aide-Mémoire Harlequin - IDE SQL Terminal
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.
Installation
| 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 |
Installation avec Adaptateurs de Bases de Données
# 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+
Lancement de Harlequin
| 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 |
Raccourcis Clavier dans l’Application
Éditeur de Requêtes
| 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 |
Panneau de Résultats
| 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 |
Général
| Touche | Description |
|---|
Ctrl+q | Quitter Harlequin |
Ctrl+b | Basculer la barre latérale du catalogue de données |
F1 | Aide |
Fonctionnalités Spécifiques à DuckDB
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');
Fichier de Configuration
Créez un fichier de configuration pour sauvegarder les profils de connexion fréquemment utilisés :
Configuration de Profils
# ~/.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
Adaptateurs Disponibles
| 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 |
Flux de Travail Courants
# 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');
Intégration Django
# Installer django-harlequin
pip install django-harlequin
# Lancer Harlequin connecté à votre DB Django
./manage.py harlequin
Dépannage
| 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 |
Comparaison avec Autres Outils SQL
| 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 |
Ressources