OmniSelect FileSQL

Guides
← Back to App
HomeGuides › Converting between formats

Convert Between CSV, JSON, Excel and Parquet

Most format conversion happens because somebody downstream cannot open what you have. The usual fix is an online converter that wants your file uploaded. Here is the same job done locally — and because SQL sits in the middle, you can convert a filtered subset rather than the whole thing.

What converts to what

Anything readable can be written to any of the four export formats:

ReadWrite
CSV, TSV, TXT, Excel (.xlsx/.xls/.xlsm), JSON, XML, YAML, Avro, ParquetCSV, JSON, Excel, Parquet

So JSON→Excel, Parquet→CSV, XML→JSON, Avro→Parquet, YAML→Excel and every other pairing are all the same three steps.

The three steps

  1. Drag the source file onto the File Select panel in the tool. Note its alias letter — events.json becomes E.
  2. Run SELECT * FROM E.
  3. Click Export and pick the target format.

The output is generated inside your browser and saved to your downloads folder. Nothing is uploaded at any point.

Convert a file without handing it to a stranger's server.

Open the tool →

Convert less than everything

This is the part a plain converter cannot do. Instead of SELECT *, convert exactly what the recipient needs:

-- Only this year, only the columns they asked for
        SELECT order_id, customer_name, amount, order_date
        FROM E
        WHERE order_date >= '2025-01-01'
        ORDER BY order_date

That keeps their spreadsheet a workable size and avoids sending columns nobody needs — which is both a courtesy and, when the file contains personal data, a sensible habit.

What survives the trip

ConcernBehaviour
Nested structuresJSON, XML and YAML nesting is flattened to dot-path columns on read. Exporting to CSV or Excel keeps that flat shape — the nesting is not rebuilt. This is usually the point of the conversion.
Repeated elementsAn array produces one row per element, with parent values repeated alongside. A 10-order JSON file with 3 items each becomes 30 rows.
Numeric typesNumeric-looking values are treated as numbers, so 250.00 exports as 250. Trailing zeros are presentation, not data.
Leading zerosPreserved. 00042 stays text precisely so conversion does not corrupt it.
Parquet export typesNumeric columns stay numeric; everything else is written as text. Predictable, but it means a round-trip is not guaranteed to reproduce every original column type. Keep the original if you need a faithful copy.
Excel exportOne sheet containing the result set. Formatting, formulas and multiple sheets are not carried across.

Notes on particular conversions

JSON to Excel

The common frustration is that Excel cannot open nested JSON at all. Flattening solves it: customer.address.city becomes its own column, so the spreadsheet is usable. Check the headers with SELECT * FROM E LIMIT 1 before exporting — deeply nested files can produce a lot of columns, and selecting the ones you want is usually better than taking all of them.

CSV to Parquet

Useful for shrinking a large extract before sending it, or feeding a data pipeline that expects Parquet. Numeric columns are detected automatically, so filters still work on the far side. Compression means the output is typically far smaller than the CSV.

Parquet to CSV or Excel

The everyday case: a colleague sent a .parquet from a warehouse and cannot open it. See opening a Parquet file offline for the full walkthrough.

XML or YAML to anything

Both flatten the same way as JSON. See querying XML, YAML and Avro.

Combining files while converting

Because SQL is in the middle, the input does not have to be one file. Join a Parquet extract to a CSV lookup and export the enriched result as Excel in a single pass:

SELECT S.order_id, S.amount, R.region_name
        FROM S
        JOIN R ON S.region_code = R.code

Related Guides