SQLITE
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
Sqlite Preview.
At a glance
| Original creator | D. Richard Hipp |
| First published | 2004 |
| Purpose | A whole SQL database (tables, indexes, views and triggers) in one cross-platform file, the native format of the SQLite engine. |
| Extensions | .sqlite, .sqlite3 |
| Poka parser | poka-sqlite |
| Viewer | poka-tree-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B4 Summary (see Breadth tiers) |
How much Poka reads
B4 Summary. The container and metadata are read and summarised (counts, properties, structure), but the main content is not rendered.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: parsers/poka-sqlite/src/lib.rs (header, table b-tree walk, varints, records, sqlite_master, row counts, size integrity check) and tests/samples.rs over corpus .sqlite files (sample.sqlite, SpatiaLite and WAL samples). Schema and counts only: table, view, index and trigger names, declared columns, row counts; no row data is shown. Covers SQLite 3 files with UTF-8 text.
What Poka does not read
- No table rows or cell values are shown
- Databases with UTF-16 text encoding have schema names read as UTF-8 and so garbled
- Overflow pages are not followed, so very long CREATE statements are cut
- Row counts for WITHOUT ROWID tables read as 0 (index b-tree pages are not walked)
- Index columns, foreign keys, constraints and view or trigger bodies are not shown (only the leading SELECT and the trigger timing and event)
- Write-ahead log (WAL) content is not applied
- Row counting stops at 1000000 rows; tree capped at 3000 nodes
- Virtual tables are named with their module, but their contents are not read
Background
SQLite 1.0 was released in August 2000, 2.0 in September 2001 and 3.0 in June 2004. The Library of Congress page covers the version 3 file format, which every SQLite 3 release can read and write and which the developers have committed to keep backward compatible. The code and documentation are in the public domain. Poka walks the file format directly rather than linking a database engine: the header, the b-tree pages, varints and records. It lists the tables, indexes, views and triggers in sqlite_master (the tree stops at 3,000 nodes), counts each table's rows (a WITHOUT ROWID table shows 0) and parses the declared columns from the CREATE TABLE statement.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| SQLite 3 | SQLite format 3\0 |
Partly read | The tree stops at 3,000 nodes, a UTF-16 database is read as UTF-8, and a WITHOUT ROWID table reports 0 rows. |
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- SQLite database file format (candidate; public spec; spec; https://www.sqlite.org/fileformat.html)
- turso_core (pure-Rust SQLite rewrite) (candidate; MIT; Rust; https://github.com/tursodatabase/turso)
- rusqlite (candidate; MIT; Rust; https://github.com/rusqlite/rusqlite) — links the C libsqlite3; avoided per docs/status/50-50-programme.md
Sources
- https://www.loc.gov/preservation/digital/formats/fdd/fdd000461.shtml
- parsers/poka-sqlite/src/lib.rs