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.

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. Every table in full; the schema's foreign keys are not read.
Status
Ready
Fidelity
Read directly
Largest file
25 MB free, 250 MB once a project is bought

What it actually is

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

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.

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

2 named failures, each with the repair.

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.

What is done: 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.

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.

What is done: 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

About this format, not about the product.

Will it read every table?

Yes: every table, in full, and SQLite's own internal bookkeeping tables are left out. The foreign keys are not read, though. A relationship between two tables is detected from the columns they share, the same way it would be for any other file.

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

Rename it to .sqlite or .db first. Which reader runs is decided by the extension alone, and a suffix the registry does not know is refused at upload rather than opened and inspected.

Is this better than exporting each table to CSV?

It is one file rather than a folder of them, which is easier to send and impossible to get out of step. What comes back is the same either way: every table is read, the analysis runs on the largest one, and relationships between tables are detected from the columns they share rather than from the schema.

Keep reading

The jobs people do with this file, and the formats beside it.