ターミナル内で完全に動作するフル機能のSQL IDE。シンタックスハイライト、オートコンプリート、データカタログサイドバー、複数のデータベースアダプター、結果のエクスポート機能を備えています — GUIは不要です。
| 方法 | コマンド |
|---|
| uv (推奨) | uv tool install harlequin |
| pip | pip install harlequin |
| pipx | pipx install harlequin |
| Homebrew | brew install harlequin |
| Poetry | poetry add harlequin |
# DuckDB(組み込み、追加インストール不要)
uv tool install harlequin
# SQLiteアダプター
uv tool install 'harlequin[sqlite]'
# PostgreSQLアダプター
uv tool install 'harlequin[postgres]'
# MySQLアダプター
uv tool install 'harlequin[mysql]'
# 複数のアダプターを一度に
uv tool install 'harlequin[postgres,mysql,sqlite,s3]'
必要条件: Python 3.9+
| コマンド | 説明 |
|---|
harlequin | インメモリDuckDBデータベースで開く |
harlequin mydb.duckdb | DuckDBデータベースファイルを開く |
harlequin -a sqlite mydb.db | SQLiteデータベースを開く |
harlequin -a sqlite | インメモリSQLiteデータベースを開く |
harlequin -a postgres -h localhost -p 5432 -U user -d mydb | PostgreSQLに接続 |
harlequin -a mysql -h localhost -u root mydb | MySQLに接続 |
harlequin --theme monokai | 特定のカラーテーマを使用 |
harlequin --locale en_US | 数値フォーマットのロケールを設定 |
harlequin --help | すべてのCLIオプションを表示 |
| キー | 説明 |
|---|
Ctrl+Enter | 現在のクエリを実行 |
Ctrl+j | 現在のクエリを実行(代替) |
Ctrl+o | SQLファイルを開く |
Ctrl+s | 現在のクエリをファイルに保存 |
Ctrl+n | 新しいクエリタブ |
Ctrl+w | 現在のクエリタブを閉じる |
Ctrl+k | 次のクエリタブに切り替え |
Tab | オートコンプリート提案を受け入れる |
Escape | オートコンプリートメニューを閉じる |
F1 | ヘルプ / コンテキストドキュメントを表示 |
| キー | 説明 |
|---|
Ctrl+r | 結果パネルにフォーカスを切り替え |
Ctrl+e | クエリエディタにフォーカスを切り替え |
| 矢印キー | 結果テーブルをナビゲート |
Ctrl+c | 選択したセルをコピー |
| キー | 説明 |
|---|
Ctrl+q | Harlequinを終了 |
Ctrl+b | データカタログサイドバーを切り替え |
F1 | ヘルプ |
DuckDBはデフォルトのアダプターで、強力な機能をサポートしています:
-- CSVファイルを直接読み取り
SELECT * FROM read_csv_auto('data.csv');
-- Parquetファイルを読み取り
SELECT * FROM read_parquet('data.parquet');
-- JSONファイルを読み取り
SELECT * FROM read_json_auto('data.json');
-- リモートファイルをクエリ
SELECT * FROM read_csv_auto('https://example.com/data.csv');
-- S3ファイルをクエリ(s3アダプターを使用)
SELECT * FROM read_parquet('s3://bucket/data.parquet');
-- 複数ファイルからデータを集計
SELECT * FROM read_csv_auto('logs/*.csv');
頻繁に使用する接続プロファイルを保存するために設定ファイルを作成:
# ~/.config/harlequin/config.toml
# (または--configフラグでパスを指定)
[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"]
プロファイルを使用:
harlequin --profile local-pg
| アダプター | インストール追加 | 接続例 |
|---|
| DuckDB | (組み込み) | 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 |
| ODBC | odbc | 汎用ODBC接続 |
| Trino | trino | Trino/Prestoクラスター |
| BigQuery | bigquery | Google BigQuery |
| Cassandra | cassandra | Apache Cassandra |
| ClickHouse | clickhouse | ClickHouseデータベース |
| MotherDuck | (DuckDB経由) | クラウドDuckDB |
# クイックデータ探索 — CSVをデータベースとして開く
harlequin
# その後クエリエディタで: SELECT * FROM read_csv_auto('data.csv') LIMIT 100;
# SQLiteデータベースを探索(例:モバイルアプリDB)
harlequin -a sqlite app.db
# 開発用にローカルPostgresに接続
harlequin -a postgres -h localhost -p 5432 -U dev -d myapp_dev
# データベースにロードせずにParquetファイルを分析
harlequin
# その後: SELECT * FROM read_parquet('output/*.parquet');
# django-harlequinをインストール
pip install django-harlequin
# Django DBに接続してHarlequinを起動
./manage.py harlequin
| 問題 | 解決策 |
|---|
| アダプターが見つからない | 追加と共にインストール: uv tool install 'harlequin[postgres]' |
| 接続が拒否された | ホスト、ポート、データベースサーバーが実行中であることを確認 |
| 表示の問題 | 別のターミナルを試す(Kitty、WezTerm、iTerm2推奨) |
| 大きなテーブルで遅い | クエリにLIMITを使用; 巨大なテーブルでSELECT *を避ける |
| オートコンプリートがない | スキーマを持つデータベースに接続していることを確認 |
| 機能 | Harlequin | DBeaver | pgcli | usql |
|---|
| ターミナルで動作 | あり | なし(GUI) | あり | あり |
| マルチデータベース | あり | あり | Postgresのみ | あり |
| オートコンプリート | あり | あり | あり | なし |
| ビジュアル結果テーブル | あり | あり | 基本 | 基本 |
| ファイルクエリ(CSV、Parquet) | あり(DuckDB) | 制限あり | なし | なし |
| 設定プロファイル | あり | あり | あり | なし |