OmniSelect FileSQL

Guides
← Back to App
HomeGuides › Querying 26 files at once

Query 26 Files in One Statement

A spreadsheet starts to struggle at two files. This takes twenty-six, loaded together, as tables A through Z — reference lists, monthly extracts and everything in between, joined and stacked in ordinary SQL.

Where the Letter Comes From

Each file becomes a table named by a single letter, shown in the Alias column. The letter is taken from the first letter of the filename, and if that letter is already in use, the next free letter A–Z is assigned instead.

FileAliasWhy
sales.csvSFirst letter, and S is free
regions.parquetRFirst letter, and R is free
services.yamlAS is taken by sales.csv, so it falls back to the first free letter
💡 That fallback is the single most common surprise. Do not assume the letter — read the Alias column, or type your own letter into it. If two files start with the same letter and you care which is which, rename one before loading, or set the alias by hand.

Loading Them All

  1. Click anywhere on the File Select panel to open the file picker.
  2. Select every file — Ctrl+A in the dialog, or click the first and shift-click the last.
  3. They load together. The panel scrolls; each row shows the filename, type and alias.

A useful convention when you have many: prefix the filenames so the alphabet does the ordering for you. a-customers.csv, b-products.csv, c-regions.csv and so on gives you an alias map you can predict without reading it.

Select a folder's worth of files and query the lot.

Open the tool →

Joining Across Four of Them

With a-customers.csv, b-products.csv, c-regions.csv and a monthly orders extract as E:

SELECT C.region, B.category, COUNT(*) AS orders, ROUND(SUM(E.amount)) AS revenue
FROM E
JOIN A ON E.customer_id = A.customer_id
JOIN B ON E.product_id = B.product_id
JOIN C ON A.region = C.region
GROUP BY C.region, B.category
ORDER BY revenue DESC

Four files, one statement, no import step and no database. Formats can be mixed freely — a Parquet extract joins to a CSV lookup list exactly as if they were two tables in the same schema.

Stacking Monthly Extracts

The other common shape: twenty-two monthly files that all have the same columns, and you want them as one table. UNION ALL does it.

SELECT '2025-08' AS month, COUNT(*) AS orders, ROUND(SUM(amount)) AS revenue FROM X
UNION ALL
SELECT '2025-09', COUNT(*), ROUND(SUM(amount)) FROM Y
UNION ALL
SELECT '2025-10', COUNT(*), ROUND(SUM(amount)) FROM Z

The literal month string in the first column is worth the extra typing — without it, the rows come back with no way to tell which file each one came from.

💡 TOTAL is a reserved word in the SQL engine, so AS total is a parse error. Use AS revenue, AS total_amount or anything else. It is an easy five minutes to lose if you do not know.

The Limits, Honestly

LimitValue
Files loaded at once26 — one per letter of the alphabet
Size per file50 MB
Rows per file1,000,000
Tables in one joinNo fixed limit below 26, but each join multiplies the work

The real constraint is your machine. Twenty-six files of a few thousand rows each is comfortable on a laptop. Twenty-six files at the 50 MB ceiling is not what this is for, and a warehouse or DuckDB is the right answer at that point — that is a genuine recommendation, not a grudging one.

Reasonable Questions

Can I use the plain-English box across several files?

Yes. It infers relationships between the loaded files and writes the join for you, so a question spanning two files produces a join without you naming it. With twenty-six loaded it is better used for single-table questions; write the big joins yourself. See the guide.

What if I need a twenty-seventh file?

Remove one first. The alphabet is the hard limit, and it was chosen because a single-letter alias keeps queries readable.

Do the files have to be the same format?

No. Mix CSV, Excel, JSON, XML, YAML, Avro and Parquet in one query — see the formats guide.

Can I change an alias after loading?

Yes — type a different letter into the Alias box on that row. Queries you have already written will need updating to match.

Does loading 26 files send 26 uploads?

It sends nothing at all. Every file is read locally; the network panel stays empty throughout. Check it here.

Related Guides