Skip to content

No account required

Start a project

The .sqlite file.

The one file format that arrives already knowing how its tables relate to each other. That turns out to be worth a great deal.

Also .db, which are read the same way.

What it actually is

SQLite stores an entire relational database — every table, index, view and foreign key — in a single file with no server behind it. It is the most widely deployed database in the world, sitting inside phones, browsers, and most desktop applications that need to remember anything.

For analysis, the interesting part is the schema. A set of CSV exports from the same database arrives as a pile of rectangles whose relationships have to be inferred from column names and matched values. A .sqlite file states them.

A `.db` file is usually SQLite too, and folds into this page. Where one turns out to be something else, it is reported plainly rather than parsed hopefully.

At a glance

Contains
Every table, index, view and foreign key in one file
Server
None. The file is the database.
Typing
Dynamic, so a column can hold mixed types
Common extensions
.sqlite, .sqlite3, .db
Read here as
Direct. Foreign keys are used to work out how tables relate.
Status
Ready
Fidelity
Read directly
Largest file
250 MB

Every table read, with the foreign keys used to work out how they relate.

Upload one

The analysis runs before there is anything to pay for. You see what it found, and the evidence behind it, first.

No account needed to start. You only pay when you like what you see.

What goes wrong, and what is done about it

01

Dynamic typing means a column can hold anything

SQLite applies type affinity rather than strict types. A column declared INTEGER will happily store the string "N/A", and every row looks fine until an aggregation encounters it.

Each column's actual value types are counted rather than trusted from the declaration, and any column holding more than one is reported as a finding before it is used in arithmetic.

02

Dates stored as whatever the application felt like

SQLite has no date type. Applications store dates as ISO strings, as Unix epochs in seconds, as epochs in milliseconds, or as Julian day numbers, and all four are just numbers or text in the file.

The encoding is inferred per column from the value range and format, and the interpretation chosen is stated as an assumption you can overturn.

Questions people ask

Will it read every table?

Yes, along with the foreign keys, which is what lets it work out that orders belong to customers without you saying so. Tables that are internal bookkeeping rather than data are identified and left out of the analysis.

What if my app's data file has no extension I recognise?

Upload it anyway. The file is identified by its contents rather than its name, and if it turns out not to be SQLite you get told that rather than a pile of nonsense.

Is this better than exporting each table to CSV?

Considerably, because the relationships survive. Exported separately, the join between two tables has to be inferred and reported with a match rate; sent as a database, it is read from the schema.

Jobs people do with this file

Related formats