The .sqlite file.
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.