← All tools

nao1215/sqly

Popularity 75 Updated Data & Databases

executes SQL against CSV, TSV, LTSV, JSON, JSONL, Parquet, Microsoft Excel™ , ACH, and Fedwire files with shell.

githubauto-collected

Installation

A directly usable install command is not verified yet. Check the project documentation or releases.

[](https://github.com/nao1215/atago) [](https://github.com/nao1215/himorime) [](https://github.com/nao1215/sqly/actions/workflows/build.yml) [](https://github.com/nao1215/sqly/actions/workflows/reviewdog.yml) [](https://github.com/nao1215/sqly/releases)

sqly

sqly runs SQL against CSV, TSV, LTSV, JSON, JSONL, Parquet, Excel, ACH, and Fedwire files. It loads them into an in-memory SQLite3 database, so joins, CTEs, window functions, and aggregates all work — across formats, in one query. Compressed files (.gz, .bz2, .xz, .zst, .z, .snappy, .s2, .lz4) are read transparently.

Documentation: https://nao1215.github.io/sqly/

Try it in 30 seconds

If you have Go, paste this:

printf 'name,dept,salary\nalice,eng,120\nbob,sales,90\ncarol,eng,140\n' > staff.csv
go run github.com/nao1215/sqly@latest --sql "SELECT dept, ROUND(AVG(salary)) AS avg FROM staff GROUP BY dept" staff.csv
+-------+-----+
| dept  | avg |
+-------+-----+
| eng   | 130 |
| sales |  90 |
+-------+-----+

The file is the table: staff.csv became staff. No schema to declare, no import step.

Why sqly?

Pick the tool that fits the job:

| You want | Use | |:--|:--| | A field-oriented text processor for logs and columns | awk, Miller | | A CSV-native SQL dialect with its own engine and cursors | csvq | | SQL over CSV/TSV/JSON with a choice of backend engines | trdsql | | SQL over CSV with long-standing, mature tooling | q, textql | | Analytics on data larger than memory, or on files in S3 | DuckDB | | SQL over files, with an interactive shell, cross-format joins, and write-back | sqly |

sqly's emphasis is the session: an interactive shell with completion and history, files of different formats joined as peers, and the ability to write edits back into the source file.

Against DuckDB, which is faster and has the richer SQL, sqly's ground is narrower: UPDATE a CSV or Excel file and .save --in-place it, read ACH, Fedwire and LTSV, keep a Shift-JIS or EUC-JP file in its encoding when it is saved, and write queries in MySQL, PostgreSQL or GoogleSQL syntax with --dialect.

Install

go install github.com/nao1215/sqly@latest
brew install nao1215/tap/sqly

Arch Linux users can install the AUR package: