OmniSelect FileSQL

Guides
← Back to App
Home › Guides › Opening an Access database without Access

Getting the Tables Out of an .accdb or .mdb, Without Microsoft Access

Access databases outlive the people who built them. A .accdb behind a retired departmental system, a .mdb from 2003 in an archive folder — and a computer without Microsoft Access: a Mac, a Chromebook, or a Windows PC on a Microsoft 365 plan that does not include it. The data is only tables. Here is how to get at them.

Why It Is Harder Than It Should Be

Access runs only on Windows, and comes only with some Microsoft 365 plans. The usual ways round it all have a catch:

ApproachWhat it costs
Microsoft AccessWindows only, and only on the plans that include it. There has never been a Mac version.
Importing into ExcelExcel for Windows can import Access tables through Get Data. Excel for Mac cannot.
mdbtoolsFree command-line tools for Linux and macOS that export tables to CSV. An install and a terminal.
An online converterThe whole database uploaded to someone else’s server. Access files tend to hold staff, customer and finance records.

Doing It in the Browser

OmniSelect FileSQL reads Access files with mdb-reader, a JavaScript library, inside your browser tab. It works in any modern browser on any operating system, and the database is never uploaded.

  1. Open the app.
  2. Drop the .accdb or .mdb file onto the File Select panel. Every table in the database gets its own row, and its own one-letter name in the Alias column, taken from the table’s name:
    RowAlias
    shop.accdb › CustomersC
    shop.accdb › OrdersO
    shop.accdb › ProductsP
  3. Look at a table.
    SELECT * FROM O
orderidcustomeridorderdatetotalnotes
112026-04-02182.5Deliver before noon
222026-04-031240
312026-04-0796.25
442026-04-09310.4Standing order

Total is an Access Currency field and arrives as a number, so it adds up in SUM and sorts as a number. OrderDate is a date, and the Long Text Notes field is text. Column names are shown in lower case, and a space in a name becomes an underscore: Company Name in Customers is queried as company_name.

Joining the Tables Back Together

The relationships you drew in Access are not needed: each table is its own SQL table, and you join them on the fields they share. Ask in plain English — total by city, highest first — and the SQL is written for you, inside your browser, with the join found on CustomerID:

SELECT C.city, SUM(O.total) AS total_total FROM C JOIN O ON C.customerid = O.customerid GROUP BY C.city ORDER BY total_total DESC
citytotal_total
Leeds2280.5
Bristol278.75
Glasgow58.99

The name total_total is “the total of Total”; it is only a label, and you can rename it in the SQL. orders where total is over 300 gives SELECT * FROM O WHERE total > 300. Or write the query yourself — spend per customer:

SELECT C.Company_Name, C.City, COUNT(*) AS orders, SUM(O.Total) AS spend
FROM O
JOIN C ON O.CustomerID = C.CustomerID
GROUP BY C.Company_Name, C.City
ORDER BY spend DESC
company_namecityordersspend
Northgate HardwareLeeds21695
Millstone BakeryLeeds2585.5
Harbour CafeBristol2278.75
Kelpie BooksGlasgow158.99

Drop an .accdb or .mdb file in and see every table.

Open the app →

From Access SQL to This SQL

The saved queries in an Access database do not come across — only the tables do — but the tables they read are all there, so a query can be rewritten. The engine here is DuckDB, whose SQL is close to standard. The differences you will meet most:

In AccessHere
[Company Name]Company_Name — spaces are already underscores
"Leeds"'Leeds' — text goes in single quotes
#2026-04-10#'2026-04-10', as in WHERE OrderDate >= '2026-04-10'
LIKE "*Books"LIKE '%Books' — % and _ instead of * and ?
Nz(Notes, "(none)")COALESCE(Notes, '(none)')
IIf(Active, "Active", "Closed")CASE WHEN Active THEN 'Active' ELSE 'Closed' END

What Comes Across

In AccessIn the table
Short Text, Long Text (Memo)Text
Number, AutoNumberNumbers
Currency, Decimal, Large NumberNumbers
Date/TimeDates, with the time when there is one
Yes/Notrue / false
Queries, forms, reports, macrosNot included: they are parts of the Access application, not data
Linked tablesNot listed: their data lives in another file — open that file
System tables (MSys…)Not listed
Password-protected databasesRefused

The reader supports .mdb files from Access 97 and from Access 2000–2003, and .accdb files from Access 2010 to Access 2019.

Getting Every Table Out

To move a whole database into Excel or CSV, export each table in turn: run SELECT * FROM C, choose Export › Excel, then the same for O and P. Each export holds every row of the result, not just those on screen. A joined result exports the same way, which is often what was wanted all along: the orders with the customer’s name already beside them.

Reasonable Questions

Does it work on a Mac?

Yes — on macOS, Linux, ChromeOS or Windows, in a current Chrome, Edge, Firefox or Safari. Nothing is installed.

Will it change or lock my database?

No. The browser gives the page a read-only copy of the file. The original is not opened by Access, not written to and not uploaded — here is how to check.

Can I edit the data and save it back?

No. Only SELECT queries run here, and exports are CSV, JSON, Excel or Parquet.

How big a database can it open?

Up to 50 MB per file, and 1,000,000 rows per table. Access allows files of up to 2 GB, so a large one will be refused.

Can I join an Access table to a spreadsheet?

Yes. Every table and every file you add becomes a table of its own, and up to 26 can be joined in one query — see querying 26 files at once.

Related Guides