Query files is a SQL Editor utility that turns a CSV, JSON, or fixed-width file into a queryable table without you first standing up a database or writing a loader script. Drop the file in, and you're running SQL against it in seconds.
What it accepts
Under Utilities → Query files in the SQL Editor sidebar, FoxSchema reads:
- CSV / TSV — comma, tab, semicolon, pipe, or a custom delimiter
- JSON — a JSON array or newline-delimited JSON (NDJSON)
- Fixed-width text — you set the column start/length offsets
Large files upload in chunks over a disk-backed session, so you're not limited to what fits comfortably in a browser tab.
Two ways to land the data
Once a file is parsed, you choose where the resulting table lives:
- New temp SQLite workspace (the default) — a short-lived
Files: …credential appears in your Destinations list. Use Add table to existing Files workspace to bring in more files as additional tables in the same temp database, so you can join across them. Temp workspaces expire after about 24 hours. - Import into a saved credential — load the file straight into a real server (Postgres, MySQL, SQL Server, DB2, Oracle, DuckDB, and more) using chunked, multi-row
INSERTbatches, so it becomes a permanent table there instead.
Replace table if it exists controls what happens on a re-import into the same workspace or credential; Replace previous file imports (off by default) clears out earlier Files: workspaces whenever you start a new one.
Working with the result
The Files sidebar lists every table in your active workspace. Click one to select its connection and load a sample SELECT, delete a single workspace, or clear everything. From there it behaves like any other Destination: write SQL against it, join it with another imported file, or run it side by side with a real database connection using the same multi-destination Run that the rest of the SQL Editor supports. A join across two imported CSVs looks exactly like a normal query once both are loaded into the same temp workspace:
SELECT o.order_id, o.total, c.email
FROM orders o
JOIN customers c ON c.customer_id = o.customer_id
WHERE o.total > 500;Where this is actually useful
A few concrete cases where importing beats opening a spreadsheet:
- A vendor sends a CSV export and you need to check it against production data before loading it for real
- You want to join two unrelated CSVs on a shared key without writing a script
- You're reconciling a JSON API dump against what's actually in a table
- You need a quick, disposable SQLite database to prototype a query before running it against a real connection
Because a file import becomes a normal Destination, it slots into the same comparison and migrate tooling FoxSchema uses elsewhere — you can side-by-side compare an imported file against a live table, or use schema comparison once you've decided the file's structure should become a real table.
See the documentation for the full Query files reference, or install FoxSchema and try it against your own export.