A tool from Excelano
xql
Real SQL for SharePoint Lists and CSV files.
Run SELECT, UPDATE, INSERT, and DELETE against a SharePoint list — or a CSV on disk — from one command-line tool, using the SQL you already know. WHERE clauses translate to server-side OData, so even large lists come back fast. Writes preview before they commit.
A real SQL prompt for SharePoint
xql binds to a SharePoint list through Microsoft Graph with device-code sign-in, then runs SELECT, UPDATE, DELETE, and INSERT against it. WHERE predicates translate to OData $filter and run server-side, so even large lists return quickly rather than dragging every row across the wire. The same binary runs against local CSV files with identical grammar, which makes it easy to prototype a query offline before pointing it at a live list.
Writes preview by default. xql parses the statement, prints the affected row count and a sample of what would change, then prompts before committing. One-shot mode (--exec) requires an explicit --commit instead, with a separate --confirm-destructive gate before a bare DELETE will run. The intent is that you never change data you didn't mean to.
The REPL speaks SQL plus a set of sqlite-shaped meta-commands — mode, headers, output, once, describe, refresh — and renders results as an ASCII table, TSV, CSV, or JSON. It is written in pure Go with no runtime dependencies: a single binary, nothing to install alongside it.
See it in action
A short session against a CSV file — the same grammar works unchanged against a SharePoint list.
Install
With Go (1.24 or later)
go install github.com/excelano/xql/cmd/xql@latest
On Debian or Ubuntu
Install from the Excelano apt repository so apt upgrade keeps it current:
curl -fsSL https://excelano.com/apt/setup.sh | sudo sh sudo apt install xql
Prebuilt binaries
Linux and macOS builds for x86_64 and arm64 are on the GitHub releases page. There is also a one-line convenience installer; see the README for it, and for version pinning and custom install directories.
Behind the tool
I built xql because getting data out of SharePoint shouldn't mean writing a throwaway script every time. That friction — SharePoint, Graph, Power Automate, the gap between where your data lives and where you can actually use it — is what I do for clients as an independent Microsoft 365 builder.
If your team is fighting the same friction, that's a conversation worth having.
For technical users
xql is open source under the MIT license, written in pure Go with no runtime dependencies. The full source, the grammar reference, and the backend documentation live at github.com/excelano/xql. The security policy and supported versions are in SECURITY.md.