---
title: "SQLite naar Oracle migreren in je browser"
description: "Migreer een SQLite-database naar Oracle: zet het .db-bestand of de dump om naar een script met dezelfde tabellen, sleutels en data, met een rapport."
canonical: https://intosql.com/nl/sqlite-naar-oracle
last_updated: 2026-10-15
---

# SQLite naar Oracle migreren in je browser

Zet een SQLite-databasebestand (.db, .sqlite, .sqlite3) neer of de SQL die .dump van sqlite3 schrijft, en download een Oracle-script met dezelfde tabellen, sleutels, indexen en data. Elke kolom krijgt het type waarin zijn waarden passen, en elke waarde die Oracle niet ongewijzigd kan bevatten, staat in het rapport.

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

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

## Wat er verandert van SQLite naar Oracle

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

| In SQLite | In Oracle | Rapportregel |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | het type waarin elke waarde in de kolom past |  |
| BOOLEAN, BOOL | NUMBER(1) met een CHECK op 0 en 1 |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | VARCHAR2(n CHAR) als elke waarde past, anders CLOB |  |
| TEXT and VARCHAR(n) longer than 4000 bytes | VARCHAR2(4000 CHAR) als elke waarde in 4000 bytes past (750 tekens in een sleutel), anders CLOB | `text_as_lob` |
| 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 of TIMESTAMP(p), afhankelijk van wat de waarden bevatten |  |
| JSON holding JSON text | CLOB |  |
| Infinity in REAL columns | behouden als BINARY_DOUBLE_INFINITY |  |
| INTEGER PRIMARY KEY, AUTOINCREMENT | GENERATED BY DEFAULT ON NULL AS IDENTITY, verdergaand na het hoogste id of de waarde in sqlite_sequence |  |
| COLLATE NOCASE | exacte vergelijking | `case_insensitive_collation` |
| generated columns | virtuele kolommen | `stored_as_virtual` |
| 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) | na de data ENABLE NOVALIDATE, daarna gevalideerd |  |
| ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT | weggelaten | `foreign_key_action_unsupported` |
| empty strings and empty blobs | NULL | `empty_string_null` |
| 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 Oracle 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
NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @sqlite.oracle.sql
```

Refererende sleutels worden toegevoegd met ENABLE NOVALIDATE, zodat nieuwe rijen meteen worden gecontroleerd, en daarna gevalideerd. Verwijst een oude rij naar een rij die niet bestaat, dan vertelt het script welke constraint het is en laat het die ongevalideerd, in plaats van halverwege te mislukken.

Voer bij een grote dump SQL*Plus uit op dezelfde machine als de database. Het script commit elke 100 rijen. De gebruiker die het uitvoert, heeft CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER en CREATE PROCEDURE nodig, en quota op zijn tablespace.

## 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 en triggers zijn geschreven in de eigen taal van SQLite. Ze staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je ze kunt herschrijven voor Oracle. Virtuele tabellen, zoals FTS5 en R*Tree, worden ook vermeld, en hun schaduwtabellen worden weggelaten.

## Vragen over SQLite naar Oracle

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

Het gedeclareerde type is een hint en de waarden beslissen: een kolom wordt NUMBER, BINARY_DOUBLE, DATE, TIMESTAMP, BLOB, VARCHAR2 of CLOB als elke waarde erin past. Lege strings worden NULL, zoals Oracle ze opslaat, en het rapport telt ze.

### Blijven INTEGER PRIMARY KEY en AUTOINCREMENT behouden?

Ja. Een INTEGER PRIMARY KEY wordt een identity-kolom, elke rij behoudt zijn id, en het volgende id gaat verder na het hoogste, of na de waarde in sqlite_sequence bij AUTOINCREMENT.

### En weergaven en triggers?

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

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

Oracle 19c en later. Elke testdump laadt op 21c en 23ai 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 SQLite](https://intosql.com/nl/sqlite-naar-sqlite)
- [SQLite naar SQL Server](https://intosql.com/nl/sqlite-naar-sql-server)

## Naar Oracle

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

## Handleiding en elke combinatie

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