Uma IDE SQL completa que roda inteiramente em seu terminal. Apresenta destaque de sintaxe, autocompletar, barra lateral de catálogo de dados, múltiplos adaptadores de banco de dados e exportação de resultados — sem necessidade de GUI.
| Método | Comando |
|---|
| uv (Recomendado) | uv tool install harlequin |
| pip | pip install harlequin |
| pipx | pipx install harlequin |
| Homebrew | brew install harlequin |
| Poetry | poetry add harlequin |
# DuckDB (integrado, sem instalação extra necessária)
uv tool install harlequin
# Adaptador SQLite
uv tool install 'harlequin[sqlite]'
# Adaptador PostgreSQL
uv tool install 'harlequin[postgres]'
# Adaptador MySQL
uv tool install 'harlequin[mysql]'
# Múltiplos adaptadores de uma vez
uv tool install 'harlequin[postgres,mysql,sqlite,s3]'
Requisitos: Python 3.9+
| Comando | Descrição |
|---|
harlequin | Abrir com banco de dados DuckDB em memória |
harlequin mydb.duckdb | Abrir um arquivo de banco de dados DuckDB |
harlequin -a sqlite mydb.db | Abrir um banco de dados SQLite |
harlequin -a sqlite | Abrir banco de dados SQLite em memória |
harlequin -a postgres -h localhost -p 5432 -U user -d mydb | Conectar ao PostgreSQL |
harlequin -a mysql -h localhost -u root mydb | Conectar ao MySQL |
harlequin --theme monokai | Usar um tema de cores específico |
harlequin --locale en_US | Definir localização de formatação de números |
harlequin --help | Mostrar todas as opções CLI |
| Tecla | Descrição |
|---|
Ctrl+Enter | Executar consulta atual |
Ctrl+j | Executar consulta atual (alternativa) |
Ctrl+o | Abrir um arquivo SQL |
Ctrl+s | Salvar consulta atual em arquivo |
Ctrl+n | Nova aba de consulta |
Ctrl+w | Fechar aba de consulta atual |
Ctrl+k | Mudar para próxima aba de consulta |
Tab | Aceitar sugestão de autocompletar |
Escape | Dispensar menu de autocompletar |
F1 | Mostrar ajuda / documentação contextual |
| Tecla | Descrição |
|---|
Ctrl+r | Mudar foco para painel de resultados |
Ctrl+e | Mudar foco para editor de consultas |
| Setas direcionais | Navegar tabela de resultados |
Ctrl+c | Copiar célula(s) selecionada(s) |
| Tecla | Descrição |
|---|
Ctrl+q | Sair do Harlequin |
Ctrl+b | Alternar barra lateral de catálogo de dados |
F1 | Ajuda |
DuckDB é o adaptador padrão e suporta recursos poderosos:
-- Ler arquivos CSV diretamente
SELECT * FROM read_csv_auto('data.csv');
-- Ler arquivos Parquet
SELECT * FROM read_parquet('data.parquet');
-- Ler arquivos JSON
SELECT * FROM read_json_auto('data.json');
-- Consultar arquivos remotos
SELECT * FROM read_csv_auto('https://example.com/data.csv');
-- Consultar arquivos S3 (com adaptador s3)
SELECT * FROM read_parquet('s3://bucket/data.parquet');
-- Agregar dados de múltiplos arquivos
SELECT * FROM read_csv_auto('logs/*.csv');
Crie um arquivo de configuração para salvar perfis de conexão frequentemente usados:
# ~/.config/harlequin/config.toml
# (ou use flag --config para especificar caminho)
[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"]
Usar perfis com:
harlequin --profile local-pg
| Adaptador | Instalação Extra | Exemplo de Conexão |
|---|
| DuckDB | (integrado) | 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 em armazenamento na nuvem |
| ODBC | odbc | Conexões ODBC genéricas |
| Trino | trino | Clusters Trino/Presto |
| BigQuery | bigquery | Google BigQuery |
| Cassandra | cassandra | Apache Cassandra |
| ClickHouse | clickhouse | Bancos de dados ClickHouse |
| MotherDuck | (via DuckDB) | DuckDB na nuvem |
# Exploração rápida de dados — abrir CSV como banco de dados
harlequin
# Então no editor de consultas: SELECT * FROM read_csv_auto('data.csv') LIMIT 100;
# Explorar um banco de dados SQLite (ex: DB de app mobile)
harlequin -a sqlite app.db
# Conectar ao Postgres local para desenvolvimento
harlequin -a postgres -h localhost -p 5432 -U dev -d myapp_dev
# Analisar arquivos Parquet sem carregar em um banco de dados
harlequin
# Então: SELECT * FROM read_parquet('output/*.parquet');
# Instalar django-harlequin
pip install django-harlequin
# Iniciar Harlequin conectado ao seu DB Django
./manage.py harlequin
| Problema | Solução |
|---|
| Adaptador não encontrado | Instalar com extras: uv tool install 'harlequin[postgres]' |
| Conexão recusada | Verificar host, porta e se o servidor de banco de dados está rodando |
| Problemas de exibição | Tente um terminal diferente (Kitty, WezTerm, iTerm2 recomendados) |
| Lento em tabelas grandes | Use LIMIT em consultas; evite SELECT * em tabelas enormes |
| Autocompletar faltando | Certifique-se de estar conectado a um banco de dados com esquema |
| Recurso | Harlequin | DBeaver | pgcli | usql |
|---|
| Roda em terminal | Sim | Não (GUI) | Sim | Sim |
| Multi-banco de dados | Sim | Sim | Apenas Postgres | Sim |
| Autocompletar | Sim | Sim | Sim | Não |
| Tabela de resultados visual | Sim | Sim | Básica | Básica |
| Consultas de arquivo (CSV, Parquet) | Sim (DuckDB) | Limitado | Não | Não |
| Perfis de configuração | Sim | Sim | Sim | Não |