SkillAgentSearch skills...

Rsql

Command line SQL interface for relational databases and common data file formats

Install / Use

/learn @theseus-rs/Rsql

README

<p align="center"><img width="250" height="250" src="rsql_cli/resources/rsql.png"></p>

rsql

ci Documentation Code Coverage Latest version Github All Releases License Semantic Versioning

A modern, feature-rich command line SQL interface for data

rsql is a powerful and user-friendly command line SQL client that works with over 20 different data sources and formats. Whether you're working with databases, files, or cloud services, rsql provides a consistent and intuitive interface for all your data querying needs.

Highlights

  • Universal SQL Interface: Query databases, files, and cloud services with standard SQL
  • Rich Interactive Experience: Syntax highlighting, auto-completion, and command history
  • Multiple Output Formats: ASCII tables, JSON, CSV, HTML, and more
  • Extensive Data Source Support: PostgreSQL, MySQL, SQLite, DuckDB, Parquet, CSV, Excel, and many more
  • Compression Support: Automatically handles compressed files (gzip, brotli, etc.)
  • Embedded Database: Run PostgreSQL queries without external setup
  • Multilingual: Interface available in 40+ languages

demo.webm

Quick Start

Installation

Linux / MacOS:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/theseus-rs/rsql/releases/latest/download/rsql_cli-installer.sh | sh

or Homebrew:

brew install rsql

Windows:

irm https://github.com/theseus-rs/rsql/releases/latest/download/rsql_cli-installer.ps1 | iex

Cargo

cargo install rsql_cli

For detailed installation instructions, visit the rsql documentation.

Basic Usage

Interactive Mode:

# Connect to a database
rsql --url "postgresql://user:pass@localhost/mydb"

# Query a CSV file
rsql --url "csv://data.csv"

# Use DuckDB for in-memory analytics
rsql --url "duckdb://"

Execute Single Query:

# Run a query and exit
rsql --url "sqlite://database.db" -- "SELECT * FROM users LIMIT 10"

# Query a Parquet file
rsql --url "parquet://data.parquet" -- "SELECT column1, COUNT(*) FROM table GROUP BY column1"

Supported Data Sources

Databases

  • ClickHouse (clickhouse://)
  • CockroachDB (cockroachdb://)
  • CrateDB (cratedb://)
  • DuckDB (duckdb://) - High-performance analytics
  • DynamoDB (dynamodb://)
  • LibSQL/Turso (libsql://)
  • MySQL / MariaDB (mysql:// / mariadb://)
  • PostgreSQL (postgresql:// / postgres://) - Including embedded PostgreSQL
  • Redshift (redshift://)
  • Snowflake (snowflake://)
  • SQL Server (sqlserver://)
  • SQLite (sqlite:// / rusqlite://)

File Formats

  • Arrow (arrow://) - In-memory columnar format
  • Avro (avro://) - Binary serialization format
  • CSV/TSV (csv:// / tsv://) - Comma/tab-separated values
  • Excel (excel://) - .xlsx and .xls files
  • Fixed Width (fwf://) - Fixed-width format
  • JSON/JSONL (json:// / jsonl://) - JSON documents
  • ODS (ods://) - OpenDocument Spreadsheet
  • ORC (orc://) - Optimized row columnar format
  • Parquet (parquet://) - Columnar storage format
  • XML (xml://) - XML documents
  • YAML (yaml://) - YAML documents

Cloud & Remote

  • FlightSQL (flightsql://) - Apache Arrow Flight SQL
  • HTTP/HTTPS (http:// / https://) - Remote files
  • S3 (s3://) - Amazon S3 and S3-compatible storage

Compression

Automatically handles: Gzip, Brotli, Bzip2, LZ4, XZ, Zstd

Common Use Cases

Database Operations

# Connect to PostgreSQL
rsql --url "postgresql://user:pass@localhost/mydb"

# Use embedded PostgreSQL (no external setup required)
rsql --url "postgresql://user@localhost/mydb?embedded=true"

# SQLite file
rsql --url "sqlite://database.db"

File Analysis

# Analyze CSV data
rsql --url "csv://sales.csv" -- "SELECT region, SUM(revenue) FROM table GROUP BY region"

# Query Excel spreadsheet
rsql --url "excel://report.xlsx" -- "SELECT * FROM table WHERE amount > 1000"

# Analyze Parquet files
rsql --url "parquet://logs.parquet" -- "SELECT date, COUNT(*) FROM table GROUP BY date"

Data Transformation

# Convert CSV to JSON
rsql --url "csv://input.csv" --format json -- "SELECT * FROM input"

# Query compressed files
rsql --url "csv://data.csv.gz" -- "SELECT column1, column2 FROM data"

# Combine multiple formats
rsql --url "duckdb://" -- "
  SELECT * FROM read_csv_auto('file1.csv') 
  UNION ALL 
  SELECT * FROM read_parquet('file2.parquet')
"

Advanced Features

Output Formats

Control output with --format:

  • ascii - ASCII table (default)
  • csv - Comma-separated values
  • html - HTML table
  • json - JSON format
  • markdown - Markdown table
  • xml - XML format
  • yaml - YAML format
  • And more...

Configuration

# Set default format
rsql --url "sqlite://db.sqlite" --format json

# Custom delimiter for CSV output
rsql --url "postgresql://..." --format csv --delimiter ";"

# Expanded output for wide tables
rsql --url "..." --format expanded

Examples

File Format Examples

CSV with custom options:

rsql --url "csv://data.csv?has_header=true&skip_rows=1"

Fixed-width file:

rsql --url "fwf://data.txt?widths=10,20,15&headers=id,name,email"

Delimited file with custom separator:

rsql --url "delimited://data.txt?separator=|&has_header=true"

Database Examples

PostgreSQL with SSL:

rsql --url "postgresql://user:pass@localhost/db?sslmode=require"

MySQL with charset:

rsql --url "mysql://user:pass@localhost/db?charset=utf8mb4"

Features

| Feature | Description | |-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Data Sources | Arrow, Avro, ClickHouse, CockroachDB, CrateDB, CSV, Delimited, DuckDB, DynamoDB, Excel, FlightSQL, FWF, JSON, JSONL, LibSQL (Turso), MariaDB, MySQL, ODS, ORC, Parquet, PostgreSQL, Redshift, Snowflake, SQLite3, SQL Server, TSV, XML, YAML | | Compression | Brotli, Bzip2, Gzip, LZ4, XZ, Zstd | | Syntax Highlighting | ✅ Full SQL syntax highlighting | | Result Highlighting | ✅ Color output for better readability | | Query Auto-completion | ✅ Smart completion for SQL keywords and table names | | History | ✅ Command history with search | | SQL File Execution | ✅ Execute .sql files directly | | Embedded PostgreSQL | ✅ No external PostgreSQL installation required | | Output Formats | ascii, csv, expanded, html, json, jsonl, markdown, plain, psql, sqlite, tsv, unicode, xml, yaml | | Localized Interface | 40+ languages¹ | | Key Bindings | emacs, vi

View on GitHub
GitHub Stars418
CategoryData
Updated3d ago
Forks14

Languages

Rust

Security Score

100/100

Audited on Mar 28, 2026

No findings