Releases: uzairmukadam/SheetQL
Export issue fixed
An issue where exporting the result requires an existing file to overwrite has been fixed. The tool can now create a new file.
v3.0.0
🚀 Release Notes: SheetQL v3.0 – The "Zero-Copy" Performance Update
I am thrilled to announce SheetQL v3.0, a complete architectural rewrite designed for speed, scale, and professional workflows.
This release transitions SheetQL from a utility script into a robust ETL engine. By moving to a Zero-Copy Architecture powered by DuckDB and integrating Rust-based libraries, we have eliminated memory bottlenecks and improved startup times by up to 10x.
🌟 Highlights
-
⚡ Zero-Copy Loading: Queries CSV, Parquet, and JSON files directly from the disk using DuckDB Views. You can now query multi-gigabyte files instantly without waiting for them to load into RAM.
-
🦀 Rust-Powered Excel Engine: Integrated
python-calamineto parse.xlsxfiles at lightning speed, bypassing the slow XML parsing of traditional Python libraries. -
🧠 Context-Aware Autocomplete: A new IntelliSense engine that suggests SQL keywords, table names, and columns as you type. It even remembers columns from tables you haven't queried yet.
-
🎥 Session Recording: Ad-hoc exploration is now reproducible. Use the new
.dumpcommand to save your current session (inputs + queries) into a clean YAML automation script. -
🛡️ Enterprise-Grade Stability:
-
Memory Guards: Configured to prevent crashes by spilling to disk when RAM is full (75% limit).
-
Streaming Exports: Uses
xlsxwriterto write massive Excel reports without holding the file in memory. -
Professional Logging: Separates user-friendly console messages from detailed debug traces stored in
sheetql.log.
-
🛠️ New Commands
.dump <file.yml>: Export the current session history as a reusable automation script.
.runscript <file.yml>: Execute a saved automation script.
.load: Add files to the session dynamically without restarting.
📦 Dependency Updates
To unlock the full performance of v3, we have introduced optional high-performance dependencies.
# Install optional accelerators (Recommended)
pip install python-calamine xlsxwriter prompt_toolkit
⚠️ Breaking Changes
-
Internal Architecture: The
_load_datamethod now returns list of table names (strings) instead of a dictionary of DataFrames. Custom scripts importing SheetQL as a library will need updates. -
Case Sensitivity: Table and column names are now sanitized and lowercased more aggressively to ensure SQL compatibility.
Thank you to everyone who tested the beta versions. Happy Querying! 🦆📊
v2.0.1 fix
SheetQL v2.0.1
🚀 What's Fixed
Previously, exporting results failed when the target file did not already exist, due to reuse of the read-file logic which assumed the file's presence. This has now been resolved by updating the export flow to support creating new files when needed, ensuring smoother and more reliable result exports.
v2.0.0
SheetQL v2.0.0
🚀 New Features
- Broad File Support: Natively query Excel (
.xlsx,.xls), CSV (.csv), JSON (.json,.jsonl) and Apache Parquet (.parquet) files. - Powerful Automation: Execute complex workflows non-interactively with YAML scripts for reproducible analysis and reporting.
- Live Session Introspection: Check table structures with the
.schemacommand and review past queries with.history.
▶️ Getting Started
To get started, please follow the detailed instructions in our README.
pip install -r requirements.txt
python sheet_ql.py
🚀 What's Next?
I am already planning future features like persistent sessions, and more export formats. We welcome your feedback!
Initial Release
SheetQL v1.0.0 - SQL on Local Files!
Excited to announce the first official release of SheetQL, an interactive command-line tool that brings the power of SQL to your local data files. This release focuses on providing a fast and user-friendly way to analyze Excel, CSV, and Parquet files without manual data wrangling.
🚀 Key Features
SheetQL allows you to dynamically load multiple files, run standard SQL queries in a live terminal, and use convenient commands like .rename to create table aliases. It uses a graphical file picker when available and includes a safe-exit prompt to prevent losing your work. When you're done, use the .export command to save multiple results to a single, professionally formatted Excel report.
▶️ Getting Started
To get started, please follow the detailed instructions in our README.
pip install -r requirements.txt
python sheet_ql.py
🚀 What's Next?
I am already planning future features like persistent sessions, query history, and more export formats. We welcome your feedback!