---
title: "Migrar PostgreSQL a MariaDB en tu navegador"
description: "Migra una base de datos PostgreSQL a MariaDB: convierte un archivo de pg_dump en un script con las mismas tablas, claves y datos, y un informe de cada cambio."
canonical: https://intosql.com/es/postgresql-a-mariadb
last_updated: 2026-10-15
---

# Migrar PostgreSQL a MariaDB en tu navegador

Suelta un volcado plano de pg_dump o pg_dumpall, en .sql o .sql.gz, y descarga un script de MariaDB con las mismas tablas, claves, índices y datos. Cada valor que MariaDB no puede guardar tal cual, y cada objeto que no admite, aparece en el informe.

[Guía de migración de PostgreSQL a MariaDB](https://intosql.com/docs/migrations/postgresql-to-mariadb)

[Tipos de datos de PostgreSQL a MariaDB](https://intosql.com/docs/types/postgresql-to-mariadb)

## Qué cambia de PostgreSQL a MariaDB

Cada fila es una regla que aplica el convertidor, con la línea que escribe en el informe cuando la regla cambia algo en tus datos.

| En PostgreSQL | En MariaDB | Línea del informe |
| --- | --- | --- |
| boolean | tinyint(1) |  |
| varchar(n), char(n), text | varchar(n) hasta 1024 caracteres, char(n) hasta 255, text si son más |  |
| numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds | varchar | `decimal_as_text` |
| money | decimal(19,2) | `type_replaced` |
| interval | varchar(100) con el texto de PostgreSQL | `type_replaced` |
| arrays (integer[], text[]...) | arreglos json | `type_replaced` |
| ranges, geometric types, tsvector, xml, hstore, composite and extension types | longtext con el texto de PostgreSQL | `type_replaced` |
| json, jsonb | json |  |
| timestamp | datetime(p) |  |
| timestamp with time zone | datetime(p) en UTC | `moments_as_utc` |
| time | time(p) |  |
| infinity, -infinity, BC dates and years past 9999 | 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 | sin NOT NULL | `not_null_relaxed` |
| enum types | enum(...) con las mismas etiquetas |  |
| uuid, inet, cidr | uuid como uuid, inet y cidr como varchar(43) |  |
| bytea | blob, mediumblob o longblob; varbinary(3072) en una clave |  |
| bit(n) | bit(n) hasta 64, text si son más |  |
| citext and nondeterministic collations | comparación exacta | `case_insensitive_collation` |
| serial, identity | AUTO_INCREMENT, siguiendo después del id más alto |  |
| a second serial or identity column in a table | entero simple | `counter_dropped` |
| sequences not owned by a column | CREATE SEQUENCE, en el valor que entrega a continuación |  |
| generated columns | columnas generadas, STORED como en el origen |  |
| generated columns with functions MariaDB lacks | una columna simple | `generated_not_translated` |
| defaults with functions MariaDB lacks, and defaults from a sequence | sin valor predeterminado | `default_not_translated` |
| CHECK constraints | traducido, en línea en CREATE TABLE |  |
| CHECK constraints with functions MariaDB lacks | no se crea | `check_skipped` |
| CHECK ... NOT VALID | no se crea | `check_not_valid` |
| gin, gist, brin and hash indexes, partial and expression indexes | no se crea | `index_skipped` |
| foreign keys | claves foráneas, cargadas con FOREIGN_KEY_CHECKS=0 |  |
| foreign keys to tables the dump doesn't create | no se crea | `foreign_key_skipped` |
| partitioned tables | una tabla con las filas de todas las particiones | `partitions_dropped` |
| schemas | una base de datos, con el nombre del esquema delante de cada tabla | `schemas_merged` |
| views, functions, procedures, triggers, rules, policies, extensions and types | listados en el informe | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | tipos leídos de los valores | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | longtext | `unknown_type` |
| text that isn't valid in its encoding | los bytes incorrectos como carácter de reemplazo | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | se copia tal cual | `mojibake_suspected` |

## Carga el script en MariaDB

El script crea las tablas, copia las filas y luego agrega claves, índices y claves foráneas, así que carga rápido y se detiene en el primer error.

```shell
mariadb --default-character-set=utf8mb4 mydb < postgresql.mariadb.sql
```

Las claves foráneas se crean como las declara el volcado, con FOREIGN_KEY_CHECKS=0 mientras cargan las filas, como hace mysqldump.

Para un volcado grande, ejecuta el cliente en la misma máquina que el servidor, y sube max_allowed_packet si una sola fila es muy grande.

IntoSQL Pro carga el archivo directo en MariaDB desde la app de escritorio o la línea de comandos, sin escribir un script.

## Haz el volcado de PostgreSQL para el mejor resultado

El convertidor lee lo que contiene el volcado. Estas opciones conservan más de tus datos en él:

- --format=plain, el formato predeterminado de pg_dump, escribe SQL. Un archivo custom o de directorio (-Fc, -Fd) pasa a SQL con pg_restore -f dump.sql, sin un servidor de base de datos.
- --no-owner --no-privileges dejan fuera los roles y los permisos, que el convertidor omite de todos modos, así que el volcado es más pequeño.
- pg_dumpall vuelca todas las bases de datos en un archivo; las tablas de cada una llevan su nombre, así que nada choca.

## Qué no se convierte

Las vistas, vistas materializadas, funciones, procedimientos, disparadores, reglas, políticas de seguridad de filas, extensiones y tipos se escriben en el lenguaje propio de PostgreSQL. Aparecen en el informe por nombre, nunca se descartan en silencio, para que puedas reescribirlos para MariaDB.

## Preguntas sobre PostgreSQL a MariaDB

### ¿Se sube mi volcado?

No. El convertidor se ejecuta en tu navegador y lee el volcado de tu disco por partes, así que nunca sale de tu computadora. La app de escritorio y la línea de comandos también convierten en tu computadora.

### ¿Qué tan grande puede ser el volcado?

El convertidor nunca tiene todo el volcado en memoria: lee el archivo dos veces, por rangos, y escribe el script sobre la marcha. Los volcados de varios gigabytes se convierten en el navegador, en la app de escritorio y con la línea de comandos.

### ¿Lee archivos de pg_dump -Fc?

No directamente: un archivo custom tiene formato binario. pg_restore -f dump.sql dump.backup lo pasa al SQL plano que lee el convertidor, sin conectarse a un servidor. El convertidor lo indica cuando recibe un archivo así.

### ¿De qué versiones de PostgreSQL puede venir el volcado?

Volcados escritos por pg_dump y pg_dumpall de PostgreSQL 10 en adelante, con filas COPY o INSERT. Cada volcado de prueba viene de PostgreSQL 13 y 18 y se compara con su origen celda por celda.

### ¿Se conservan los valores serial e identity?

Sí, para una columna por tabla: la columna serial o identity que encabeza la clave primaria se vuelve AUTO_INCREMENT y sigue después del id más alto. Las secuencias que no pertenecen a una columna se vuelven secuencias de MariaDB en el valor que habían alcanzado.

### ¿Qué pasa con los arreglos, los enum y otros tipos de PostgreSQL?

Los arreglos se vuelven arreglos JSON, los booleanos tinyint(1), los enum ENUM con las mismas etiquetas, uuid UUID y money un decimal. Los rangos, los tipos geométricos, hstore y los tipos compuestos conservan el texto de PostgreSQL, y el informe dice qué columnas.

### ¿Qué pasa con las funciones, los disparadores y las vistas?

Aparecen en el informe por nombre y no se convierten, porque cada base de datos los escribe en su propio lenguaje.

### ¿En qué versiones de MariaDB carga el script?

MariaDB 10.11 y posteriores. Cada volcado de prueba carga en 10.11 y 11.4, y se detiene en el primer error si algo sale mal.

## Desde PostgreSQL

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

## Hacia MariaDB

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

## Guía y todos los pares

- [MariaDB a PostgreSQL](https://intosql.com/es/mariadb-a-postgresql)
- [Guía de migración de PostgreSQL a MariaDB](https://intosql.com/docs/migrations/postgresql-to-mariadb)
- [Tipos de datos de PostgreSQL a MariaDB](https://intosql.com/docs/types/postgresql-to-mariadb)
- [Todos los pares de bases de datos](https://intosql.com/es/migracion-de-bases-de-datos)
