Skip to content

Harlequin - Terminal SQL IDE Cheatsheet

A full-featured SQL IDE that runs entirely in your terminal. Features syntax highlighting, autocomplete, a data catalog sidebar, multiple database adapters, and results export — no GUI needed.

MethodCommand
uv (Recommended)uv tool install harlequin
pippip install harlequin
pipxpipx install harlequin
Homebrewbrew install harlequin
Poetrypoetry add harlequin
# DuckDB (built-in, no extra install needed)
uv tool install harlequin

# SQLite adapter
uv tool install 'harlequin[sqlite]'

# PostgreSQL adapter
uv tool install 'harlequin[postgres]'

# MySQL adapter
uv tool install 'harlequin[mysql]'

# Multiple adapters at once
uv tool install 'harlequin[postgres,mysql,sqlite,s3]'

Requires: Python 3.9+

CommandDescription
harlequinOpen with in-memory DuckDB database
harlequin mydb.duckdbOpen a DuckDB database file
harlequin -a sqlite mydb.dbOpen a SQLite database
harlequin -a sqliteOpen in-memory SQLite database
harlequin -a postgres -h localhost -p 5432 -U user -d mydbConnect to PostgreSQL
harlequin -a mysql -h localhost -u root mydbConnect to MySQL
harlequin --theme monokaiUse a specific color theme
harlequin --locale en_USSet number formatting locale
harlequin --helpShow all CLI options
KeyDescription
Ctrl+EnterExecute current query
Ctrl+jExecute current query (alternative)
Ctrl+oOpen a SQL file
Ctrl+sSave current query to file
Ctrl+nNew query tab
Ctrl+wClose current query tab
Ctrl+kSwitch to next query tab
TabAccept autocomplete suggestion
EscapeDismiss autocomplete menu
F1Show help / contextual documentation
KeyDescription
Ctrl+rSwitch focus to results panel
Ctrl+eSwitch focus to query editor
Arrow keysNavigate results table
Ctrl+cCopy selected cell(s)
KeyDescription
Ctrl+qQuit Harlequin
Ctrl+bToggle data catalog sidebar
F1Help

DuckDB is the default adapter and supports powerful features:

-- Read CSV files directly
SELECT * FROM read_csv_auto('data.csv');

-- Read Parquet files
SELECT * FROM read_parquet('data.parquet');

-- Read JSON files
SELECT * FROM read_json_auto('data.json');

-- Query remote files
SELECT * FROM read_csv_auto('https://example.com/data.csv');

-- Query S3 files (with s3 adapter)
SELECT * FROM read_parquet('s3://bucket/data.parquet');

-- Aggregate data from multiple files
SELECT * FROM read_csv_auto('logs/*.csv');

Create a config file to save frequently-used connection profiles:

# ~/.config/harlequin/config.toml
# (or use --config flag to specify path)

[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"]

Use profiles with:

harlequin --profile local-pg
AdapterInstall ExtraConnection Example
DuckDB(built-in)harlequin data.duckdb
SQLitesqliteharlequin -a sqlite data.db
PostgreSQLpostgresharlequin -a postgres -h host -U user -d db
MySQLmysqlharlequin -a mysql -h host -u user db
S3 / GCSs3Parquet/CSV on cloud storage
ODBCodbcGeneric ODBC connections
TrinotrinoTrino/Presto clusters
BigQuerybigqueryGoogle BigQuery
CassandracassandraApache Cassandra
ClickHouseclickhouseClickHouse databases
MotherDuck(via DuckDB)Cloud DuckDB
# Quick data exploration — open CSV as a database
harlequin
# Then in query editor: SELECT * FROM read_csv_auto('data.csv') LIMIT 100;

# Explore a SQLite database (e.g., a mobile app DB)
harlequin -a sqlite app.db

# Connect to local Postgres for development
harlequin -a postgres -h localhost -p 5432 -U dev -d myapp_dev

# Analyze Parquet files without loading into a database
harlequin
# Then: SELECT * FROM read_parquet('output/*.parquet');
# Install django-harlequin
pip install django-harlequin

# Launch Harlequin connected to your Django DB
./manage.py harlequin
IssueSolution
Adapter not foundInstall with extras: uv tool install 'harlequin[postgres]'
Connection refusedCheck host, port, and that the database server is running
Display issuesTry a different terminal (Kitty, WezTerm, iTerm2 recommended)
Slow on large tablesUse LIMIT in queries; avoid SELECT * on huge tables
Missing autocompleteEnsure you’re connected to a database with a schema
FeatureHarlequinDBeaverpgcliusql
Runs in terminalYesNo (GUI)YesYes
Multi-databaseYesYesPostgres onlyYes
AutocompleteYesYesYesNo
Visual results tableYesYesBasicBasic
File queries (CSV, Parquet)Yes (DuckDB)LimitedNoNo
Config profilesYesYesYesNo