
A fast SQL interface for analyzing data files โจ
Query CSV, Parquet, Excel files with SQL โข DuckDB powered โข No database setup required

๐ Install Now โข ๐ Documentation โข ๐ก Examples โข ๐ค Contribute
SQLShell is a desktop SQL interface specifically designed for analyzing data files. It's not a database client - instead, it lets you load CSV, Parquet, Excel, and other data files and query them with SQL using DuckDB's fast analytical engine.
โก Fast File Analysis Load data files and search through millions of rows quickly. Built on DuckDB for analytical performance. |
๐ฏ Smart Execution
|
๐ง SQL Autocompletion Context-aware suggestions that understand your loaded tables and column names. |
Important: SQLShell works with data files, not live databases. It's designed for:
- ๐ Data Files - CSV, Parquet, Excel, TSV, JSON files
- ๐๏ธ Local Analysis - Load files from your computer for SQL analysis
- โก Fast Queries - DuckDB engine optimized for analytical workloads
- ๐ Data Exploration - Search and filter capabilities across your datasets
Not supported: Live database connections (MySQL, PostgreSQL, etc.). Use dedicated database clients for those.
- ๐๏ธ DuckDB Powered - Fast analytical queries on data files
- ๐ Multiple File Formats - CSV, Parquet, Excel, Delta, TSV, JSON support
- ๐จ Clean Interface - Simple SQL editor with result display
- ๐ Search Functionality - Find data across result sets quickly
- ๐ Zero Database Setup - No server installation or configuration needed
Get up and running in 30 seconds:
pip install sqlshell
sqls
That's it! ๐ SQLShell opens and you can start loading data files.
๐ง Linux Users - One-Time Setup for Better Experience
# Create dedicated environment (recommended)
python3 -m venv ~/.venv/sqlshell
source ~/.venv/sqlshell/bin/activate
pip install sqlshell
# Add convenient alias
echo 'alias sqls="~/.venv/sqlshell/bin/sqls"' >> ~/.bashrc
source ~/.bashrc
๐ป Alternative Launch Methods
If sqls
doesn't work immediately:
python -c "import sqlshell; sqlshell.start()"
- Launch:
sqls
- Load Data: Click "Load Files" to import your CSV, Parquet, or Excel files
- Query: Write SQL queries against your loaded data
- Execute: Hit
Ctrl+Enter
orF5
to run queries - Search: Press
Ctrl+F
to search through results
Once you have query results, use Ctrl+F
to search across all columns:
- Cross-column search - Finds terms across all visible columns
- Case-insensitive - Flexible text matching
- Instant feedback - Filter results as you type
- Numeric support - Search numbers and dates
Use Case | Search Term | What It Finds |
---|---|---|
Error Analysis | "error" |
Error messages in log files |
Data Quality | "null" |
Missing data indicators |
ID Tracking | "CUST_12345" |
Specific customer records |
Pattern Matching | "*.com" |
Email domains |
Workflow: Load file โ Query data โ Ctrl+F
โ Search โ ESC
to clear
Right-click text columns to create binary indicator columns for analysis:
-- Original data
SELECT category FROM products;
-- "Electronics", "Books", "Clothing"
-- After encoding
SELECT
category_Electronics,
category_Books,
category_Clothing
FROM products_encoded;
Right-click columns for quick statistical analysis and correlation insights.
F5
- Execute all SQL statements in sequenceF9
- Execute only the current statement (where cursor is positioned)- Useful for: Testing queries step by step
- Press
Ctrl+Space
for suggestions - After SELECT: Available columns from loaded tables
- After FROM/JOIN: Loaded table names
- After WHERE: Column names with appropriate operators
SQLShell can load and query:
- CSV/TSV - Comma and tab-separated files
- Parquet - Column-oriented format
- Excel - .xlsx and .xls files
- JSON - Structured JSON data
- Delta - Delta Lake format files
-- Load and explore your CSV data
SELECT * FROM my_data LIMIT 10;
-- Aggregate analysis
SELECT
category,
AVG(price) as avg_price,
COUNT(*) as count
FROM sales_data
GROUP BY category
ORDER BY avg_price DESC;
-- Join data from multiple loaded files
SELECT
c.customer_name,
SUM(o.order_total) as total_spent
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_name
ORDER BY total_spent DESC
LIMIT 10;
๐ Data Analysts
๐ฌ Data Scientists
|
๐ผ Business Analysts
๐ ๏ธ Developers
|
- Python 3.8+
- Auto-installed dependencies: PyQt6, DuckDB, Pandas, NumPy
System Requirements: SQLShell is a desktop application that works on Windows, macOS, and Linux.
|
|
- Load files (drag & drop or Load Files button)
- Explore structure (
SELECT * FROM table_name LIMIT 5
) - Build analysis (use F9 to test statements)
- Search results (Ctrl+F for specific data)
- Export findings (copy results or save queries)
๐ Table Analysis Tools
Right-click loaded tables for:
- Column profiling - Data types, null counts, unique values
- Quick statistics - Min, max, average for numeric columns
- Sample data preview - Quick look at table contents
๐ฎ Column Operations
Right-click column headers in results:
- Text encoding - Create binary columns from categories
- Statistical summary - Distribution and correlation info
- Data type conversion - Format suggestions
โก Performance Tips
- File format matters - Parquet files load faster than CSV
- Use LIMIT - for initial exploration of large files
- Column selection - Select only needed columns for better performance
- Indexing - DuckDB automatically optimizes common query patterns
SQLShell is open source and welcomes contributions!
git clone https://github.com/oyvinrog/SQLShell.git
cd SQLShell
pip install -e .
Ways to contribute:
- ๐ Report bugs and issues
- ๐ก Suggest new features
- ๐ Improve documentation
- ๐ง Submit pull requests
- โญ Star the repo to show support
MIT License - feel free to use SQLShell in your projects!
Ready to analyze your data files with SQL?
pip install sqlshell && sqls
โญ Star us on GitHub if SQLShell helps with your data analysis!
๐ Get Started Now โข ๐ Documentation โข ๐ Report Issues
A simple tool for SQL-based file analysis