OmniSelect FileSQL

How To Use Guide
← Back to App

Overview

OmniSelect FileSQL is a fully client-side SQL query tool. Your files are never uploaded to any server — all parsing and querying happens entirely in your browser. Load one or more files, write SQL, and get results instantly.

Step 1 — Select Files

Click anywhere in the File Select panel, or drag and drop files directly onto it. You can load multiple files at once to join them with SQL.

Supported File Types

FormatExtensionsNotes
CSV / TSV / TXT.csv, .tsv, .txtConfigurable delimiter, quote, record separator
Excel.xlsx, .xls, .xlsmChoose sheet, skip rows, header row supported
JSON.jsonNested objects/arrays are flattened with dot-path columns
XML.xmlNested elements flattened to dot-path columns
YAML.yaml, .ymlNested structures flattened
Avro.avroParsed via WebAssembly
Parquet.parquetParsed via WebAssembly + Apache Arrow

File Row Options

OptionApplies ToDescription
AliasAllSingle letter (A–Z) used as the table name in SQL. It is taken from the start of the filename, so orders.csv becomes O and you query it with SELECT * FROM O. If two files would claim the same letter, the second gets another free one. Editable — type whichever letter you prefer.
SheetExcelSelect which worksheet to load
Column DelimiterCSV/TSV/TXTComma, Tab, Pipe, or custom character
Quote CharacterCSV/TSV/TXTCharacter used to wrap quoted fields
Record DelimiterCSV/TSV/TXTLF, CR, or CRLF line endings
Skip RowsCSV/TSV/TXT/ExcelNumber of rows to skip from the top before reading data
Header RowCSV/TSV/TXT/ExcelWhen checked, first (non-skipped) row is used as column names
💡 Column headers with spaces are automatically converted to underscores. A column named first name becomes first_name in SQL.
💡 Numeric-looking values (e.g. "42", "3.14") are automatically coerced to numbers so you can write WHERE age = 30 instead of WHERE age = '30'.

Step 2 — Write SQL

Use the SQL Editor to write standard SQL queries. The editor supports syntax highlighting. Each loaded file is available as a table using its alias letter.

Basic Examples

-- Select all rows from file A
SELECT * FROM A

-- Filter with a number column
SELECT * FROM A WHERE age > 25

-- Filter with a text column
SELECT * FROM A WHERE city = 'New York'

-- Select specific columns
SELECT first_name, last_name, salary FROM A WHERE salary > 50000

-- Order results
SELECT * FROM A ORDER BY last_name ASC

-- Aggregate
SELECT department, COUNT(*) as total, AVG(salary) as avg_salary
FROM A
GROUP BY department

Joining Multiple Files

Load two files — they get aliases A and B (or whatever letters are assigned). Then join them:

-- Inner join
SELECT A.order_id, A.amount, B.customer_name
FROM A
JOIN B ON A.customer_id = B.id

-- Left join
SELECT A.*, B.region
FROM A
LEFT JOIN B ON A.region_code = B.code
💡 When joining, qualify column names with the table alias (e.g. A.column_name) to avoid ambiguity.

Nested JSON/XML/YAML Columns

Nested structures are flattened using dot-path names. For example, a JSON field address.city becomes a column. In the results table, the short alias is shown on top with the full path below it.

-- Query a nested field
SELECT name, address_city FROM A WHERE address_city = 'Austin'

SQL Functions Supported

OmniSelect uses AlaSQL under the hood. Commonly supported functions include:

CategoryFunctions
AggregateCOUNT, SUM, AVG, MIN, MAX
StringUPPER, LOWER, TRIM, SUBSTRING, CONCAT
ConditionalCASE WHEN … THEN … ELSE … END, COALESCE, ISNULL
FilteringLIKE, IN, BETWEEN, IS NULL, IS NOT NULL
ClausesWHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET

Step 3 — Run the Query

Click the Run Query button. Results appear in the Query Results panel below. Large result sets are paginated at 1,000 rows per page — use the Previous / Next buttons to navigate.

⚠️ Files are limited to 50MB each, and to 1,000,000 rows as a safety backstop. If a file is truncated, a notice appears above the results — truncation is never silent.

Step 4 — Export Results

Click the Export button in the Query Results panel to download results in your preferred format:

FormatDescription
CSVComma-separated values, opens in Excel or any text editor
JSONArray of objects, useful for APIs or further processing
Excel.xlsx file with results on a single sheet
ParquetColumnar .parquet file — numeric columns stay numeric, everything else is written as text

Tips & Tricks

Privacy

All processing is done entirely in your browser. No data is sent to any server. Files remain on your machine at all times.