---
title: "Een SQLite-database naar een andere versie"
description: "Zet een SQLite .db-bestand of dump om naar een script dat laadt op SQLite 3.31 en later, met dezelfde tabellen, sleutels en data, en een rapport van elke wijziging."
canonical: https://intosql.com/nl/sqlite-naar-sqlite
last_updated: 2026-10-15
---

# Een SQLite-database naar een andere versie

Sleep een SQLite-databasebestand (.db, .sqlite, .sqlite3) of de SQL die .dump van sqlite3 schrijft hierheen en download een script dat laadt op SQLite 3.31 en later. Elke kolom behoudt zijn gedeclareerde type en collatie, STRICT wordt weggelaten zodat oudere versies de tabellen accepteren, en elke wijziging staat in het rapport.

[Migratiehandleiding SQLite naar SQLite](https://intosql.com/docs/migrations/sqlite-to-sqlite)

[Datatypen van SQLite naar SQLite](https://intosql.com/docs/types/sqlite-to-sqlite)

## Wat er verandert tussen het bestand en het script

Elke rij is een regel die de converter toepast, met de rapportregel die hij schrijft als de regel iets in je data verandert.

| In het bestand | In het script | Rapportregel |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | het type waarin elke waarde in de kolom past |  |
| BOOLEAN, BOOL | INTEGER 0 of 1 met een CHECK |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | het gedeclareerde type, ongewijzigd |  |
| DECIMAL(p,s), NUMERIC | het exacte type als elke waarde erin past, anders een double |  |
| BLOB, and columns holding bytes | BLOB |  |
| DATE, DATETIME, TIMESTAMP holding ISO 8601 text | DATE, DATETIME als ISO 8601-tekst |  |
| JSON holding JSON text | TEXT |  |
| Infinity in REAL columns | 9e999, het eigen oneindig van SQLite |  |
| INTEGER PRIMARY KEY, AUTOINCREMENT | INTEGER PRIMARY KEY, AUTOINCREMENT behouden |  |
| COLLATE NOCASE | COLLATE NOCASE |  |
| generated columns | gegenereerde kolommen, STORED of VIRTUAL zoals in de bron |  |
| generated columns with functions IntoSQL doesn't write, and the || operator | een gewone kolom | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (strftime, randomblob) | geen standaardwaarde | `default_not_translated` |
| CHECK constraints | vertaald |  |
| CHECK constraints with functions IntoSQL doesn't write | niet aangemaakt | `check_skipped` |
| partial and expression indexes | niet aangemaakt | `index_skipped` |
| foreign keys (unenforced unless PRAGMA foreign_keys=ON) | dezelfde refererende sleutels, opgesomd door PRAGMA foreign_key_check |  |
| foreign keys to tables the dump doesn't create | niet aangemaakt | `foreign_key_skipped` |
| primary keys holding NULL, and NOT NULL columns with values that become NULL | NOT NULL weggelaten | `not_null_relaxed` |
| views, triggers and virtual tables (FTS, R*Tree) | vermeld in het rapport | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | typen afgeleid uit de waarden | `no_schema` |
| expressions in INSERT values other than the text functions dumps write | NULL | `expression_value` |
| NUL characters in text | behouden |  |
| text that isn't valid UTF-8 | de foute bytes als het vervangingsteken | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | ongewijzigd gekopieerd | `mojibake_suspected` |

## Het script in SQLite laden

Het script maakt de tabellen aan, kopieert de rijen en voegt daarna sleutels, indexen en refererende sleutels toe, zodat het snel laadt en bij de eerste fout stopt.

```shell
sqlite3 -bail mydb.sqlite < sqlite.sqlite.sql
```

Refererende sleutels worden in elke tabel gedeclareerd en de rijen laden met de controle op refererende sleutels uit. Daarna somt het script elke rij op die naar een niet-bestaande rij verwijst, in plaats van halverwege te mislukken.

Laad een grote dump in een nieuw bestand op een lokale schijf. Het script laadt alles in één transactie met synchronisatie uit, dus het draait op schijfsnelheid, en een laadactie die halverwege stopt, laat geen halve tabellen achter.

De opdrachtregel laadt het bestand rechtstreeks in een SQLite-database, zonder een script te schrijven. Dat is gratis.

## Een dump van SQLite maken voor het beste resultaat

De converter leest wat de dump bevat. Met deze opties blijft er meer van je data in staan:

- Het databasebestand zelf wordt ongewijzigd geconverteerd, pagina voor pagina gelezen in je browser. Sluit eerst de app die erin schrijft, zodat er geen wijziging achterblijft in het -wal-bestand.
- sqlite3 app.db .dump > app.sql schrijft dezelfde database als SQL, die ook wordt geconverteerd, als .sql of .sql.gz.
- DB Browser for SQLite schrijft die SQL met File, Export, Database to SQL file, en iterdump() in Python ook.

## Wat niet wordt geconverteerd

Weergaven, triggers, procedures, functies en andere objecten in de eigen taal van SQLite staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je elk ervan kunt controleren tegen de SQLite-versie waarin je laadt voordat je het opnieuw aanmaakt.

## Vragen over SQLite verhuizen tussen versies

### Wordt mijn dump geüpload?

Nee. De converter draait in je browser en leest de dump in delen van je schijf, dus hij verlaat je computer nooit. De desktopapp en de opdrachtregel converteren ook op je computer.

### Hoe groot mag de dump zijn?

De converter houdt nooit de hele dump in het geheugen: hij leest het bestand twee keer, in bereiken, en schrijft het script gaandeweg. Dumps van meerdere gigabytes worden geconverteerd in de browser, in de desktopapp en met de opdrachtregel.

### Kan ik het .db-bestand zelf converteren?

Ja. Zet het .db-, .sqlite- of .sqlite3-bestand neer: het wordt in je browser gelezen en nooit geüpload. Tekst met NUL-tekens en elk cijfer van een double komen aan zoals ze zijn opgeslagen, wat een .dump kan afkappen.

### Van welke SQLite-versies kan de dump komen?

Databasebestanden vanaf SQLite 3.0, in UTF-8 of UTF-16, en dumps van .dump in de sqlite3-shell of van iterdump() in Python. Elk testbestand en elke testdump komt van sqlite3 3.31 tot en met 3.54, STRICT- en WITHOUT ROWID-tabellen inbegrepen, en wordt cel voor cel met zijn bron vergeleken.

### Hoe worden kolomtypen bepaald als SQLite ze niet afdwingt?

Elke kolom behoudt zijn gedeclareerde type, net als COLLATE NOCASE en RTRIM. STRICT wordt weggelaten, zodat het script laadt op elke versie vanaf 3.31.

### Blijven INTEGER PRIMARY KEY en AUTOINCREMENT behouden?

Ja. INTEGER PRIMARY KEY en AUTOINCREMENT blijven zoals ze zijn, en sqlite_sequence gaat verder waar de dump ophield.

### En weergaven en triggers?

Ze staan op naam in het rapport en worden niet geconverteerd, zodat je ze opnieuw kunt maken zodra de tabellen er zijn.

### Op welke SQLite-versies laadt het script?

SQLite 3.31 en later. Elk testbestand en elke testdump laadt op 3.31 en 3.54 en stopt bij de eerste fout als er iets misgaat.

## Vanuit SQLite

- [SQLite naar PostgreSQL](https://intosql.com/nl/sqlite-naar-postgresql)
- [SQLite naar MySQL](https://intosql.com/nl/sqlite-naar-mysql)
- [SQLite naar MariaDB](https://intosql.com/nl/sqlite-naar-mariadb)
- [SQLite naar SQL Server](https://intosql.com/nl/sqlite-naar-sql-server)
- [SQLite naar Oracle](https://intosql.com/nl/sqlite-naar-oracle)

## Naar SQLite

- [MySQL naar SQLite](https://intosql.com/nl/mysql-naar-sqlite)
- [MariaDB naar SQLite](https://intosql.com/nl/mariadb-naar-sqlite)
- [PostgreSQL naar SQLite](https://intosql.com/nl/postgresql-naar-sqlite)
- [SQL Server naar SQLite](https://intosql.com/nl/sql-server-naar-sqlite)
- [Oracle naar SQLite](https://intosql.com/nl/oracle-naar-sqlite)

## Handleiding en elke combinatie

- [Migratiehandleiding SQLite naar SQLite](https://intosql.com/docs/migrations/sqlite-to-sqlite)
- [Datatypen van SQLite naar SQLite](https://intosql.com/docs/types/sqlite-to-sqlite)
- [Elke databasecombinatie](https://intosql.com/nl/databasemigratie)
