---
title: "PostgreSQL naar SQLite migreren in je browser"
description: "Migreer een PostgreSQL-database naar SQLite: zet een pg_dump-bestand om naar een script met dezelfde tabellen, sleutels en data, en een rapport van elke wijziging."
canonical: https://intosql.com/nl/postgresql-naar-sqlite
last_updated: 2026-10-15
---

# PostgreSQL naar SQLite migreren in je browser

Zet een gewone dump van pg_dump of pg_dumpall neer, als .sql of .sql.gz, en download een SQLite-script met dezelfde tabellen, sleutels, indexen en data. Elke waarde die SQLite niet ongewijzigd kan bevatten, en elk object dat het niet overneemt, staat in het rapport.

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

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

## Wat er verandert van PostgreSQL naar SQLite

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

| In PostgreSQL | In SQLite | Rapportregel |
| --- | --- | --- |
| boolean | INTEGER 0 of 1 met een CHECK |  |
| varchar(n), char(n), text | VARCHAR(n) en TEXT, niet afgedwongen |  |
| numeric(p,s) past 15 digits and numeric without a precision | TEXT | `decimal_as_text` |
| money | NUMERIC | `type_replaced` |
| interval | TEXT met de tekst van PostgreSQL | `type_replaced` |
| arrays (integer[], text[]...) | TEXT met een JSON-array | `type_replaced` |
| ranges, geometric types, tsvector, xml, hstore, PostGIS, composite and extension types | TEXT met de tekst van PostgreSQL | `type_replaced` |
| json, jsonb | TEXT |  |
| timestamp | DATETIME als ISO 8601-tekst |  |
| timestamp with time zone | TIMESTAMP als ISO 8601-tekst in UTC | `moments_as_utc` |
| time | TIME als tekst |  |
| infinity, -infinity and BC dates | NULL | `date_out_of_range` |
| NaN and Infinity in numeric, real and double precision | NULL | `invalid_value_null` |
| NOT NULL columns with values that become NULL | NOT NULL weggelaten | `not_null_relaxed` |
| enum types | TEXT met een CHECK op de labels |  |
| enum columns holding values outside their labels | TEXT zonder check | `enum_check_skipped` |
| uuid, inet, cidr, macaddr | TEXT |  |
| bytea | BLOB |  |
| bit(n), bit varying | INTEGER met de waarde van de bits tot 63 bits; daarboven TEXT-cijfers |  |
| oid, xid, cid | INTEGER met een CHECK dat het niet negatief is |  |
| citext and nondeterministic collations | exacte vergelijking | `case_insensitive_collation` |
| serial, identity | INTEGER PRIMARY KEY AUTOINCREMENT, verdergaand na het hoogste id |  |
| serial and identity columns that aren't the whole primary key | INTEGER zonder teller | `counter_dropped` |
| sequences not owned by a column | niet aangemaakt | `sequence_not_converted` |
| generated columns | GENERATED ALWAYS AS, STORED of VIRTUAL zoals in de bron |  |
| generated columns with functions SQLite lacks | een gewone kolom met de waarden | `generated_not_translated` |
| defaults with functions SQLite lacks, and defaults from a sequence | geen standaardwaarde | `default_not_translated` |
| CHECK constraints | vertaald, inline in CREATE TABLE |  |
| CHECK constraints with functions SQLite lacks | niet aangemaakt | `check_skipped` |
| CHECK ... NOT VALID | niet aangemaakt | `check_not_valid` |
| gin, gist, brin and hash indexes, partial and expression indexes | niet aangemaakt | `index_skipped` |
| foreign keys | in CREATE TABLE, ongecontroleerd geladen, daarna opgesomd door PRAGMA foreign_key_check |  |
| foreign keys to tables the dump doesn't create | niet aangemaakt | `foreign_key_skipped` |
| partitioned tables | één tabel met de rijen van elke partitie | `partitions_dropped` |
| schemas | één bestand, tabellen met de naam van hun schema ervoor | `schemas_merged` |
| views, functions, procedures, triggers, rules, policies, extensions and types | vermeld in het rapport | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | typen afgeleid uit de waarden | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | TEXT | `unknown_type` |
| text that isn't valid in its encoding | 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 < postgresql.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 PostgreSQL maken voor het beste resultaat

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

- --format=plain, de standaard van pg_dump, schrijft SQL. Een custom- of directoryarchief (-Fc, -Fd) wordt SQL met pg_restore -f dump.sql, zonder databaseserver.
- --no-owner --no-privileges laten rollen en rechten weg, die de converter toch overslaat, dus de dump wordt kleiner.
- pg_dumpall zet elke database in één bestand; de tabellen van elke database krijgen de naam ervan, dus niets botst.

## Wat niet wordt geconverteerd

Weergaven, gematerialiseerde weergaven, functies, procedures, triggers, regels, beveiligingsbeleid voor rijen, extensies en typen zijn geschreven in de eigen taal van PostgreSQL. Ze staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je ze kunt herschrijven voor SQLite.

## Vragen over PostgreSQL naar SQLite

### 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.

### Leest het pg_dump -Fc-archieven?

Niet direct: een custom-archief is een binair formaat. pg_restore -f dump.sql dump.backup zet het om naar de gewone SQL die de converter leest, zonder verbinding met een server. De converter meldt dat als hij een archief krijgt.

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

Dumps geschreven door pg_dump en pg_dumpall vanaf PostgreSQL 10, met rijen als COPY of INSERT. Elke testdump komt van PostgreSQL 13 en 18 en wordt cel voor cel met zijn bron vergeleken.

### Blijven serial- en identity-waarden behouden?

Een serial- of identity-kolom die de hele primaire sleutel van de tabel is, wordt INTEGER PRIMARY KEY AUTOINCREMENT, elke rij behoudt zijn id, en het volgende id gaat verder na het hoogste. Elke andere behoudt zijn waarden zonder teller, en het rapport meldt dat.

### Wat gebeurt er met arrays, enums en andere PostgreSQL-typen?

Arrays worden JSON-arrays, booleans 0 en 1, enums tekst met een check op hun labels, en timestamps met tijdzone UTC-tekst. Brede numerics blijven exact als tekst. Ranges, geometrische typen en samengestelde typen behouden de tekst van PostgreSQL.

### En functies, triggers en weergaven?

Ze staan op naam in het rapport en worden niet geconverteerd, omdat elke database ze in een eigen taal schrijft.

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

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

## Vanuit PostgreSQL

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

## Naar SQLite

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

## Handleiding en elke combinatie

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