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

# MariaDB naar PostgreSQL migreren in je browser

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

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

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

## Wat er verandert van MariaDB naar PostgreSQL

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

| In MariaDB | In PostgreSQL | Rapportregel |
| --- | --- | --- |
| TINYINT(1), BOOL | boolean als elke waarde 0 of 1 is, anders smallint | `bool_kept_numeric` |
| UNSIGNED integers | het eerstvolgende bredere gehele getal met een CHECK dat het niet negatief is; BIGINT UNSIGNED wordt bigint als elke waarde past, anders numeric(20,0) | `unsigned_widened` |
| ZEROFILL and display widths | weggelaten | `zerofill_dropped` |
| FLOAT(M,D) | real of double precision, zonder de schaal | `float_scale_dropped` |
| BIT(1), BIT(n) | boolean, bit(n) |  |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | NULL | `invalid_date_null` |
| NOT NULL columns with values that become NULL | NOT NULL weggelaten | `not_null_relaxed` |
| DEFAULT '0000-00-00' | geen standaardwaarde | `zero_date_default` |
| TIME | time als elke waarde binnen een dag valt, anders interval | `time_as_interval` |
| YEAR | smallint met een CHECK op het bereik |  |
| CHAR(n) | varchar(n) |  |
| DATETIME | timestamp |  |
| TIMESTAMP | timestamptz in de tijdzone die de dump vermeldt, UTC als die er geen vermeldt | `timestamp_zone_assumed` |
| ENUM | text met een CHECK op de waarden |  |
| ENUM holding '' (MySQL's error value) | de lege waarde, toegestaan door de check | `enum_invalid_value` |
| ENUM or SET holding values outside its list | geen CHECK | `enum_check_skipped` |
| SET | text[] met een CHECK dat elk element in de lijst staat |  |
| JSON | jsonb; json als een waarde \u0000 bevat | `json_not_jsonb` |
| NUL bytes in text | verwijderd | `nul_removed` |
| text that isn't valid in its character set | de foute bytes als het vervangingsteken | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | ongewijzigd gekopieerd | `mojibake_suspected` |
| AUTO_INCREMENT | GENERATED BY DEFAULT AS IDENTITY, met de teller voorbij de gekopieerde id's |  |
| MyISAM AUTO_INCREMENT on the second column of a key | één teller voor de tabel | `myisam_group_autoincrement` |
| ON UPDATE CURRENT_TIMESTAMP | een BEFORE UPDATE-trigger | `on_update_trigger` |
| generated columns | STORED | `virtual_as_stored` |
| generated columns with functions PostgreSQL lacks | een gewone kolom | `generated_not_translated` |
| INVISIBLE columns | gewone kolommen | `invisible_column` |
| CHECK constraints | vertaald, inline in CREATE TABLE |  |
| CHECK constraints with functions PostgreSQL lacks | niet aangemaakt | `check_skipped` |
| CHECK ... NOT ENFORCED | niet aangemaakt | `check_not_enforced` |
| defaults with functions PostgreSQL lacks | geen standaardwaarde | `default_not_translated` |
| keys and indexes on a prefix, c(20) | een index op left(c, 20) | `prefix_unique` |
| FULLTEXT indexes | GIN op to_tsvector('simple', ...) | `fulltext_as_gin` |
| indexes on values over 2,000 bytes | hash | `index_on_wide_values` |
| SPATIAL indexes | niet aangemaakt zonder PostGIS | `spatial_index_skipped` |
| functional indexes PostgreSQL can't write | niet aangemaakt | `index_skipped` |
| foreign keys | na de data, NOT VALID, daarna gevalideerd met een waarschuwing bij wezen |  |
| foreign keys to columns without a unique key | niet aangemaakt | `foreign_key_skipped` |
| table and column names | kleine letters als dat uniek blijft | `identifier_renamed` |
| names over 63 bytes | ingekort met een hash | `name_shortened` |
| GEOMETRY, POINT, POLYGON... | WKB in bytea | `geometry_as_wkb` |
| INET4, INET6, UUID (MariaDB) | inet, uuid |  |
| BINARY, VARBINARY, BLOB | bytea |  |
| PARTITION BY | één tabel | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | een tabel met de huidige rijen | `system_versioning_dropped` |
| MyISAM, MEMORY and other engines | een gewone tabel | `engine_dropped` |
| views, triggers, procedures, functions and events | vermeld in het rapport | `not_converted_objects` |
| dumps without CREATE TABLE | typen afgeleid uit de waarden | `no_schema` |
| geometries in a dump without CREATE TABLE | WKB in bytea | `geometry_inferred` |
| _ci collations | exacte vergelijking | `case_insensitive_collation` |
| SET NAMES utf8 from utf8mb4 tables | geconverteerd, met een waarschuwing | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | gelezen als Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | gelezen als UTF-8, met een waarschuwing | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | geëvalueerd |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | de standaardwaarde van de kolom | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | gewone rijen | `replace_as_insert` |
| types IntoSQL doesn't know | text | `unknown_type` |
| values that don't fit their column | NULL | `invalid_value_null` |
| unreadable geometries | NULL | `bad_geometry` |
| CREATE SEQUENCE (MariaDB) | CREATE SEQUENCE met de huidige waarde |  |
| VECTOR(n) (MariaDB 11.7+) | jsonb met de floats als array | `type_replaced` |

## Het script in PostgreSQL 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
psql -v ON_ERROR_STOP=1 -d mydb -f mariadb.postgresql.sql
```

Refererende sleutels worden toegevoegd als NOT VALID en daarna gevalideerd. Verwijst een rij naar een rij die niet bestaat, dan vertelt het script je welke constraint het is, in plaats van halverwege te mislukken.

Maak voor een grote dump eerst de database aan en voer het script uit met psql vanaf dezelfde machine als de server.

IntoSQL Pro laadt het bestand rechtstreeks in PostgreSQL vanuit de desktopapp of de opdrachtregel, zonder een script te schrijven.

## Een dump van MariaDB maken voor het beste resultaat

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

- --default-character-set=utf8mb4 behoudt emoji en andere 4-bytestekens, die een utf8mb3-dump kwijtraakt voordat de converter hem ziet.
- --hex-blob schrijft binaire kolommen en VECTOR-waarden als hexadecimaal, wat kopiëren tussen systemen overleeft.
- --routines --triggers --events voegen die objecten aan de dump toe, zodat het rapport ze kan vermelden.

## Wat niet wordt geconverteerd

Weergaven, triggers, opgeslagen procedures, functies en gebeurtenissen zijn geschreven in de eigen taal van MariaDB. Ze staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je ze kunt herschrijven voor PostgreSQL.

## Vragen over MariaDB naar PostgreSQL

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

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

Dumps van mariadb-dump en mysqldump op MariaDB 10.3 tot en met 12, met één INSERT per tabel of één per rij. Elke testdump komt van MariaDB 10.11, 11.4 en 11.8 en wordt cel voor cel met zijn bron vergeleken.

### Blijven UUID-, INET6-, JSON- en VECTOR-kolommen behouden?

UUID wordt uuid, INET4 en INET6 inet, JSON jsonb en VECTOR een jsonb-array van zijn floats. Nuldatums worden NULL en het rapport telt ze.

### Blijven AUTO_INCREMENT-waarden en sequences behouden?

Ja. Elke AUTO_INCREMENT-kolom wordt een identity-kolom die verdergaat na het hoogste id. Sequences worden PostgreSQL-sequences, en standaardwaarden die er een waarde uit halen, blijven dat doen.

### En opgeslagen procedures en triggers?

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

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

PostgreSQL 13 tot en met 18. Hetzelfde script laadt op elk ervan en stopt bij de eerste fout als er iets misgaat.

## Vanuit MariaDB

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

## Naar PostgreSQL

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

## Handleiding en elke combinatie

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