Data Files: open CSV, Excel and Parquet without a server

Open a table file in the data grid with no database server, check it column by column, split, merge or deduplicate it into new files, and query it with SQL.

Applies to
Edgely Database Manager
Updated

Also in the app Edgely Database Manager: Help, then Documentation (F1), Data Files

Data Files opens a table file and shows it in the data grid, without a database server: a class list, a gradebook, a lab's measurements. The file is read, never changed; it can be checked column by column, split into new files, one per value of one or more columns, merged with other files, cleared of duplicate rows, and aggregated, pivoted and charted.

Formats

FormatExtensionsNotes
CSV.csv, .txtThe delimiter (comma, semicolon, tab, pipe), the header row and the encoding are detected. A semicolon file reads 12,5 as the number twelve and a half
TSV.tsv, .tabTab-delimited
Excel.xlsx, .xlsm, .xls, .odsA workbook with several sheets shows a Sheet picker in the toolbar
Parquet.parquet
JSON Lines.jsonl, .ndjson, .jsonOne JSON object per line, or one JSON array

The content decides, not the name: a CSV saved as .xlsx still opens as a CSV. A file that is not a table (an image, a binary file) or an empty file is refused with a sentence saying why.

Opening a file

  • File > Open Data File in the ribbon (macOS: File > Open Data File... in the menu bar)
  • Open Data File on the Welcome page
  • Drop the file on the window: each table file dropped opens in its own tab (a dropped .sql script or picture is left alone)
  • Recent Data Files on the Welcome page: the last ten files, one click to open again (shown once a file has been opened)

Opening a file that is already open selects its tab.

Reading the grid

The toolbar shows the file name, its format, its number of rows and a lock: the file is read only. The grid shows 200 rows at a time; the footer gives the rows on screen, the page and the page buttons. A file of millions of rows opens at once: only the page on screen is read.

  • Sort: click a column header (ascending, descending, then back to the file's order). The sort runs over the whole file, not only the page on screen.
  • Search: the search field looks for the text in every column, ignoring case. The footer shows how many rows match.
  • Filter: the filter button opens the same filter bar and WHERE zone as the Data Explorer. A WHERE condition uses DuckDB's SQL, for example "grade" >= 10 AND "group" = 'B'; column names with spaces or capitals go in double quotes. Filter by Value and Exclude Value in a cell's right-click menu add a filter in one click.

Read options

The Read Options button (the sliders) changes how the file is read. Every choice starts at Detected, which shows what was found:

OptionForChoices
DelimiterCSV, TSVComma, Semicolon, Tab, Pipe
EncodingCSV, TSVUTF-8, Latin-1, UTF-16
First row holds the column namesCSV, TSV, ExcelYes, No
Columns and typesevery formatVARCHAR (text), BIGINT, DOUBLE, DECIMAL(18,3), BOOLEAN, DATE, TIMESTAMP, TIME

Reading a column as text keeps what the file says: a student number 007 stays 007. In a CSV, a column read as a type its values do not fit stops the reading with a message; in the other formats such a value becomes empty.

Checking a file

Column Profile (the chart button in the toolbar) opens a panel beside the grid that describes every column, so a file can be checked before it is graded, loaded or shared. The columns fill in a few at a time, left to right; the grid stays usable meanwhile.

For each columnWhat it means
TypeThe type the column is read as (see Read options)
EmptyCells with no value or only spaces, and their share of the rows
DistinctHow many different values the other cells hold
Min, MaxThe smallest and largest value: numbers and dates in their order, text in alphabetical order
MeanThe average, for a number column
HistogramTen bars of equal width from the minimum to the maximum, for a number or date column; hover a bar for its range and its rows
Most frequent valuesThe ten values seen most often, with their rows. Click a value to filter the grid on it (the filter shows in the filter bar, where it can be removed). A column where every value is different, a student number for example, says so instead

The profile covers the whole file, not only the rows a filter or a search shows, and its counts are exact: they match what a COUNT on the file gives. A file of two million rows is profiled in under a second. A file of more than five million rows is profiled on a sample of one million rows picked at random; the panel then says Sample of 1,000,000 rows out of ...: the counts are estimates. Changing the read options starts a new profile.

Splitting a file

Split into Files (the split button in the toolbar) cuts the file into one file per value of one or more columns: a class list into one file per group and year, a gradebook into one file per tutor. The open file is not changed; the parts are new files.

  1. Split by: click one or more columns. The preview on the right lists every combination with its number of rows and the name of the file it becomes, before anything is written. The rows of all the files add up to the rows of the file.
  2. Columns to keep: every column is ticked; untick the ones the parts should not carry (an email column before sending each group its list).
  3. Output format: CSV, Excel, Parquet or JSON Lines, whatever the file you opened.
  4. Folder: Choose a Folder picks where the parts go. They are written straight into that folder, never anywhere else.
  5. File name: {file} is the name of the open file and {Column} the value of a split column, for example {file}_{group}_{year} gives class list_A_2025.csv. It must hold every split column.
  6. Write N files: the dialog shows each file as it is written; Stop ends the split after the file being written. The summary lists every file written with its rows.
CaseWhat happens
An empty value (or only spaces)Its rows get their own file, named (empty), for example class list_(empty)_2026.csv
A value a file name cannot hold (/, :, *, ?, quotes, CON, a trailing dot)The character becomes _ and a Windows device name gets a _ in front; two values that end up with the same name (also with only a capital letter between them) are told apart with _2, _3
A file of that name is already in the folderThe preview says already in the folder, and writing asks Replace Existing Files? first; Cancel writes nothing
More than 100 filesWriting asks once more; more than 10,000 combinations are refused (split by fewer columns)
Stop, or an error on one fileThe files already written are complete; a file is never left half written
ExcelA part holds at most 1,048,575 rows (the most a sheet takes); numbers and true/false stay numbers and booleans, dates are written as text

Merging files

Merge Files (the merge button in the toolbar) puts the rows of several files into one new file: the per-tutor gradebooks back into one, the lists of every group into one class list. The open file is the first one listed.

  1. Add Files picks the other files (several at once). Each file shows its rows; the cross leaves a file out. The files may be of different formats (a CSV and a workbook, for example).
  2. The dialog shows the rows and columns in all, and lists in amber the columns that are not in every file, or of another type in one of them. Columns are matched by name, not by position, so a file with its columns in another order merges correctly. A file without a column leaves that column empty on its rows; a column holding numbers in one file and text in another becomes text (whole and decimal numbers stay numbers).
  3. Source column: ticked, the new file gets a last column (named source_file, which you can change) holding each row's file name. A file that already has a column of that name is refused: choose another name.
  4. Output format: CSV, Excel, Parquet or JSON Lines.
  5. Merge and Save As asks where to save the new file, writes it, and shows its rows; Open the New File opens it in its own tab.

A file of zero bytes is listed as empty file and adds no rows; a workbook is read from its first sheet with its detected settings. The new file can never replace one of the files it is made from.

Removing duplicates

Remove Duplicates (the button with two overlapping pages) writes the open file without its repeated rows.

  • With no column chosen, two rows are duplicates when every column is equal; click columns to compare only those (the name and the group, for example). Empty cells count as equal to each other.
  • The count comes first: Duplicates to remove: 3 of 7 rows, updated at each click. When there is nothing to remove, there is nothing to save.
  • Save Without Duplicates asks where to save the new file (CSV, Excel, Parquet or JSON Lines) and writes it: the first row of each set of duplicates is kept, and the rows keep the file's order. Open the New File opens it.

The open file is not changed.

Aggregating, pivoting and charting a file

The three buttons that a query result offers work on a data file too:

  • Aggregation (Σ): the same panel as on a result grid (group by, functions). It runs over the whole file, under the grid's filter, and its result takes the grid's place, the footer keeping only how many rows the filter matches; Back to the File Rows returns to the file.
  • Pivot table: the same panel and grid as on a result. It reads the first 10,000 rows of what the grid shows (its filter, sort and search), or the aggregation's result once one ran; the line above it says how many rows it read.
  • Chart: bar, line or pie, from the same rows.

Closing every panel returns to the file's own pages.

Querying files with SQL

Query with SQL (the terminal button in a data file's toolbar) opens a SQL tab on Data files, a target of its own that holds the files you hand it, each as a table named after the file: grades.csv is grades, Groups 2026.csv is groups_2026. The tab starts with SELECT * FROM grades LIMIT 100; run it as any query (Cmd+Enter, or Ctrl+Enter on Windows and Linux).

  • Click Query with SQL on a second file and both are there, so you can join them: SELECT grp, SUM(mark) FROM grades JOIN groups USING (student) GROUP BY grp. Completion offers the files' names and their columns.
  • A name is in lower case, with letters, digits and _ only; a name that starts with a digit gets t_ in front (2026-results.csv is t_2026_results), and a second file with the same name gets _2 (grades_2).
  • One statement that reads runs at a time: SELECT, WITH, DuckDB's PIVOT and the like. A statement that would write (DROP, CREATE, INSERT, COPY) is refused and the files are never changed. A query shows at most 10,000 rows, or the limit you set in the editor.
  • New Notebook offers Data files too, once it holds a file; its cells run on the files the same way.
  • Data files is not a server: there is no database to switch, no transaction and no Production guard, and a file query never reaches a server connection (nor a server query the files). The files stay in Data files until you quit the application.

What stays on your computer

The file is read where it is: nothing is copied, uploaded or sent anywhere, and no connection is opened. A SQL query on files only reads them. A split writes only the files listed in its summary, in the folder you chose; a merge or a duplicate removal writes only the file you name in the save dialog. The list of recent data files (paths only) is kept in the application's data folder, history/recent_data_files.json.

Something missing or wrong?

Documentation gaps are bugs. Tell us which page you were reading and what you expected to find.

Send feedback →

Product names, logos and brands mentioned on this page are the property of their respective owners. They are used for identification and comparison only, and their use does not imply any affiliation with or endorsement by them.