← 全部工具

excelano/xql

热度 75 更新于 数据与数据库

Run real SQL — SELECT, UPDATE, INSERT, DELETE — against SharePoint Lists and CSV files from one command-line tool.

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

xql

XQL — Excelano Query Language. One CLI, one SQL-shaped query language, multiple backends.

xql binds to a tabular data source at startup and runs SELECT, UPDATE, DELETE, and INSERT against it. Writes preview first, apply on confirmation. The grammar is shared across backends; only the I/O differs.

$ xql tasks.csv
Connected to: tasks.csv (5 columns, 248 rows). Type "help" for commands, "quit" to exit.

xql> SELECT Title, Status WHERE Priority > 2
| Title              | Status      |
| ------------------ | ----------- |
| Migrate auth layer | Open        |
| Backfill activity  | In Progress |
(2 rows)

xql> UPDATE SET Status = 'Done' WHERE Modified < '2024-01-01'
Would update 8 rows in tasks.csv:

Sample: | id | Title | | -- | ------------------ | | 41 | Q3 invoice cleanup | | 47 | Audit log purge | ... 6 more Apply? [y/N]: y Updated 8 of 8 rows. Wrote tasks.csv.


## Why

Tabular data lives in many places — CSVs on disk, SharePoint Lists in M365 tenants, Excel exports, database tables. Editing them in bulk is awkward. Spreadsheet apps choke past a few hundred thousand rows, point-and-click web UIs are not scriptable, and writing a one-off script for each transform is overkill. `xql` is the smallest tool that lets you write one SQL statement, see what it would change, and commit if it is right — against whichever backend matches the data you have in front of you.

v1.0 shipped the CSV backend, replacing a standalone tool called `sqlcsv`. v1.1 adds the SharePoint backend, replacing a standalone tool called `spsql`. Both predecessors are retired and their repositories are closed; `xql` is the only supported path. The grammar is identical across backends — code written against `xql csv` runs against `xql sp` once you point it at a list.

## The tabular family

`xql` is one of four small tools split by **what changes**. [xray](https://github.com/excelano/xray) observes and changes nothing — it profiles a delimited file's shape, types, and hazards before you touch it. [xled](https://github.com/excelano/xled) edits cell *values*: sed's `s///` and a per-row compute layer, applied over Excel-style ranges, never altering the table's shape. [xshape](https://github.com/excelano/xshape) changes the grid's *geometry* — pivot, unpivot, split, explode, merge. `xql` queries the *row set*: filter, aggregate, group, sort, and write back through DML.

The split decides where a job goes. Rewriting the text inside cells by pattern is xled's, even when a `WHERE` would have picked the same rows. Turning one column into several is xshape's. Anything that answers a question *about* the rows — how many, which ones, grouped by what — is `xql`'s. When you land in the wrong tool, the error says which one has the capability rather than just refusing; that routing runs in both directions across the family.

They compose over plain CSV, so a job that needs two of them is a pipeline, not a compromise: profile with xray, normalize values with xled, then query the result here.

Install

Every install line below ends with xql --install-skill. That installs the Claude Code skill alongside the binary, which is the one step people reliably skipped when it lived further down the page. Drop it if you do not use Claude Code — the CLI itself does not need it.

Debian and Ubuntu

Add the Excelano apt repository once (one-time setup):

curl -fsSL https://excelano.com/apt/setup.sh | sudo sh

Then install it, so apt upgrade keeps it current:

sudo apt install xql && xql --install-skill

Homebrew

On macOS or Linux, tap and trust the repository once — Homebrew gates third-party taps behind explicit trust (one-time setup):

brew tap excelano/tap
brew trust excelano/tap

Then install it, so brew upgrade keeps it current: