← Package directory
Available on winget

Install sql-pipe

Read CSV from stdin, query with SQL, write CSV to stdout

Install with winget
winget install --id vmvarela.sql-pipe
Upgrade
winget upgrade --id vmvarela.sql-pipe
Uninstall
winget uninstall --id vmvarela.sql-pipe

About sql-pipe

sql-pipe reads CSV from stdin, loads it into an in-memory SQLite database, runs a SQL query, and prints the results as CSV. No server, no schema files, no setup. If you know SQL and work with CSV in the terminal, this is the tool you have been reaching for.

What's new in 0.9.0

πŸš€ Features - --disk flag β€” use a file-backed SQLite temp database instead of :memory:, enabling datasets larger than available RAM. Also sets PRAGMA temp_store = FILE for transient structures. (#148) - --json-path <path> flag β€” navigate to a nested JSON array before querying, using a dot-separated path (e.g. results.items). Works with queries, --columns, and --validate. Requires -I json. (#151) πŸ› Bug Fixes - XML parser now verifies that nested closing tags match their opening tag names and exits with a clear error on mismatch (#149) ⚑ Performance - Replaced byte-by-byte takeByte() loops with bulk block reads (allocRemaining) in XML and JSON input loading β€” significantly faster on large files (#150) 🧰 Maintenance - Modularized source into dedicated modules: format, args, sqlite, loader, modes (#146) - Eliminated code duplication and simplified core patterns across the codebase (#147) πŸ“ Documentation - Added --xml-root / --xml-row usage examples to --help text, man page, and README (#152) Full Changelog: v0.8.1...v0.9.0

Read release notes

Version history

Version Updated Notes
0.9.0 Unknown πŸš€ Features - --disk flag β€” use a file-backed SQLite temp database instead of :memory:, enabling datasets larger than available RAM. Also sets PRAGMA temp_store = FILE for transient structures. (#148) - --json-path <path>...
0.8.1 Unknown What's Changed πŸ› Bug Fixes - fix: make --xml-root and --xml-row work for XML input parsing (#140) @vmvarela Full Changelog: v0.8.0...v0.8.1
0.8.0 Unknown πŸš€ Features - Add XML input and output format support β€” --input xml / --output xml (#133) - Support multi-character input delimiters β€” e.g. --delimiter '||' (#132) - Add --sample <n> flag for quick data preview with schem...
0.7.1 Unknown What's Changed - chore: remove redundant in-repo Nix and AUR packaging files (#125) @vmvarela - feat(packaging): centralize package repositories by package manager (#124) @vmvarela Full Changelog: v0.7.0...v0.7.1
0.7.0 Unknown What's Changed πŸš€ Features - feat: add JSON and NDJSON input/output format support (#118) @vmvarela - feat: add TSV input and output format support (#120) @vmvarela 🧰 Maintenance - chore: fix release-drafter duplicate ent...
0.6.0 Unknown πŸš€ Features - Add --output <file> flag to write query results to a file (#115) - Add --columns flag to list CSV input column names (#113) - Progress indicator during CSV loading (#112) - Print row count after loading CSV...
0.4.1 Unknown What's Changed - chore(deps): bump KSXGitHub/github-actions-deploy-aur from 4.1.1 to 4.1.2 (#103) @dependabot[bot] - fix(ci): include man page in generated Homebrew formula (#101) @vmvarela - ci: fix release-drafter dupl...
0.4.0 Unknown πŸš€ Features - Add --json output flag β€” results as a JSON array of objects (#74) - Add Alpine Linux .apk packages to release workflow (#75) 🧰 Maintenance - Add integration tests for --delimiter, --tsv, and --header flags (...
0.3.0 Unknown Release notes