Saltar al contenido
Inicio de IntoSQL

Convierte PostgreSQL a MariaDB

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.

Tu archivo
sqlshop_2024_postgres.sqlArchivo de ejemplo, 6,2 kB
Tu base de datos

18 filas convertidas, 3 correcciones, ninguna rechazada

Mostrar

Tablas en shop_2024_postgres.sqlVolcado de PostgreSQL 18.6 · escrito por pg_dump · utf8mb4

  • customers8 filas2
    8 columnas
    idint not null
    nametext not null
    emailvarchar(768) not null
    countrychar(2) not null
    is_activetinyint(1) not null
    tagsjson not null
    signed_update
    created_atdatetime(6) not null
  • orders10 filas1
    10 columnas
    idint not null
    customer_idint not null
    statusenum('pending','paid','shipped','cancelled') not null
    totaldecimal(10,2) not null
    itemssmallint not null
    ordered_atdatetime(6) not null
    shipped_atdatetime(6)
    notetext
    detailsjson
    deliveryvarchar(100)

Sin convertir

  • Vista paid_orders

Cada base de datos los escribe en su propio lenguaje. Reescríbelos para MariaDB.

-- Written by IntoSQL from a PostgreSQL dump. Load it with: mariadb --default-character-set=utf8mb4 <database> < <file>
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO,ALLOW_INVALID_DATES';

CREATE TABLE `customers` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` text NOT NULL,
  `email` varchar(768) NOT NULL,
  `country` char(2) NOT NULL DEFAULT 'US',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `tags` json NOT NULL,
  `signed_up` date,
  `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
  UNIQUE KEY `customers_email_key` (`email`),
  PRIMARY KEY (`id`)
) AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='People who bought at least once';

CREATE TABLE `orders` (
  `id` int NOT NULL AUTO_INCREMENT,
  `customer_id` int NOT NULL,
  `status` enum('pending','paid','shipped','cancelled') NOT NULL DEFAULT 'pending',
  `total` decimal(10,2) NOT NULL,
  `items` smallint NOT NULL DEFAULT 1,
  `ordered_at` datetime(6) NOT NULL,
  `shipped_at` datetime(6),
  `note` text,
  `details` json,
  `delivery` varchar(100),
  PRIMARY KEY (`id`),
  KEY `idx_orders_customer` (`customer_id`),
  KEY `idx_orders_status_date` (`status`,`ordered_at`),
  CONSTRAINT `orders_total_check` CHECK (`total` >= (0)),
  CONSTRAINT `orders_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`)
) AUTO_INCREMENT=5001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`tags`,`signed_up`,`created_at`) VALUES (1,'Ana Martínez','ana@example.com','MX',1,'["vip"]','2023-01-15','2023-01-15 10:24:00'),(2,'Zoë Müller','zoe@example.de','DE',1,'[]','2023-02-03','2023-02-03 08:11:42'),(3,'José Peña','jose@example.es','ES',0,'["wholesale","late payer"]','2023-03-21','2023-03-21 19:05:17'),(4,'李雷','lilei@example.cn','CN',1,'[]','2023-05-09','2023-05-09 02:40:00'),(5,'Noah O\'Brien','noah@example.ie','IE',1,'[]',NULL,'2023-06-30 14:00:00'),(6,'Amélie Laurent','amelie@example.fr','FR',1,'["vip"]','2024-01-02','2024-01-02 09:30:00'),(7,'Ravi Patel','ravi@example.in','IN',0,'[]','2024-02-29','2024-02-29 23:59:59'),(8,'Sofia Rossi 🌻','sofia@example.it','IT',1,'[]','2024-04-12','2024-04-12 12:12:12');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`delivery`) VALUES (1,1,'shipped',129.90,3,'2024-03-01 10:00:00','2024-03-02 16:30:00',NULL,'{"gift": false}','1 day 06:30:00'),(2,2,'paid',54.00,1,'2024-03-02 11:15:00',NULL,'Gift wrap 🎁','{"gift": true, "wrap": "red"}',NULL),(3,1,'cancelled',12.50,1,'2024-03-03 09:45:00',NULL,'Customer changed their mind',NULL,NULL),(4,4,'shipped',980.00,12,'2024-03-05 02:10:00','2024-03-07 08:00:00','请小心轻放','{"fragile": true}','2 days 05:50:00'),(5,5,'pending',45.75,2,'2024-03-08 17:20:00',NULL,'Leave at the door; ring twice',NULL,NULL),(6,6,'shipped',310.40,5,'2024-03-10 13:00:00','2024-03-11 09:00:00','Fragile: "glass"','{"fragile": true}','20:00:00'),(7,8,'paid',76.20,2,'2024-03-11 18:45:00',NULL,NULL,NULL,NULL),(8,2,'shipped',19.99,1,'2024-03-12 08:00:00',NULL,'Shipped date set to infinity by an old import',NULL,NULL),(9,3,'shipped',64.00,2,'2024-03-14 15:30:00','2024-03-15 10:00:00','Two parcels','{"parcels": [1, 2]}','18:30:00'),(10,7,'paid',1499.00,1,'2024-03-15 21:05:00',NULL,'C:\\Users\\ravi\\invoice.pdf',NULL,NULL);

SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;

Correcciones

  1. "created_at" de customers contiene instantes con zona horaria; MariaDB no tiene un tipo que la conserve, así que se guardan en UTC como datetime(6).
  2. "tags" de customers es text[], que MariaDB no tiene, así que es json con los mismos valores.
  3. "delivery" de orders es interval, que MariaDB no tiene, así que es varchar(100) con los mismos valores.

Para revisar

  • 1 vista, disparador, rutina o evento no se convierte; el informe lista cada uno. Vuelve a crearlos a mano en MariaDB.
  • El valor predeterminado de "tags" en customers no se puede escribir para MariaDB (a value its type can't hold), así que la columna no tiene valor predeterminado. Agrega el valor predeterminado a mano si las filas nuevas lo necesitan.
  • El índice idx_orders_details de orders usa una expresión que no se puede escribir para MariaDB (neither MySQL 5.7 nor MariaDB index an expression), así que no se crea. Crea el índice a mano si las consultas lo necesitan.
  • 1 valor en "shipped_at" de orders es una fecha que MariaDB no puede guardar, como infinity, así que queda en NULL. MariaDB guarda los años 1 a 9999 sin infinito; reemplaza esas fechas en el origen si importan.

Tu archivo se convierte en esta computadora y nunca se sube.

Otros ejemplos:

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.

  • boolean

    tinyint(1)

    El BOOLEAN de MariaDB es TINYINT(1): true es 1 y false es 0.

  • varchar(n), char(n), text

    varchar(n) hasta 1024 caracteres, char(n) hasta 255, text si son más

    El texto conserva cada carácter como utf8mb4. Una columna en una clave es varchar(768) como máximo, lo más largo que admite una clave.

  • numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds

    varchar

    El decimal de MariaDB admite 65 dígitos con 30 decimales. Los números más anchos se guardan como texto para que cada dígito siga exacto; numeric sin precisión es decimal(65,30) cuando sus valores caben.

    Línea del informe: decimal_as_text

  • money

    decimal(19,2)

    MariaDB no tiene tipo money. El importe se guarda como número, sin el símbolo de moneda que agregó la configuración regional del servidor.

    Línea del informe: type_replaced

  • interval

    varchar(100) con el texto de PostgreSQL

    El TIME de MariaDB admite duraciones de hasta 838 horas, pero un interval tiene meses y días; su texto conserva cada parte.

    Línea del informe: type_replaced

  • arrays (integer[], text[]...)

    arreglos json

    MariaDB no tiene arreglos. Un arreglo JSON conserva cada elemento y NULL, y las funciones JSON lo leen.

    Línea del informe: type_replaced

  • ranges, geometric types, tsvector, xml, hstore, composite and extension types

    longtext con el texto de PostgreSQL

    MariaDB no tiene un tipo equivalente, así que cada valor conserva el texto que escribió PostgreSQL.

    Línea del informe: type_replaced

  • json, jsonb

    json

    Los mismos valores JSON; el orden de las claves y los espacios de jsonb son los del servidor.

  • timestamp

    datetime(p)

    Un timestamp sin zona horaria es una lectura de reloj, como datetime.

  • timestamp with time zone

    datetime(p) en UTC

    El TIMESTAMP de MariaDB solo llega a 2038, así que los instantes se guardan como datetime en UTC, el mismo instante sea cual sea el desfase que escribió el volcado.

    Línea del informe: moments_as_utc

  • time

    time(p)

    El TIME de MariaDB admite cualquier hora del día, 24:00:00 incluido.

  • infinity, -infinity, BC dates and years past 9999

    NULL

    MariaDB guarda los años 1000 a 9999 sin infinito. Esos valores se vuelven NULL y el informe los cuenta.

    Línea del informe: date_out_of_range

  • NaN and Infinity in numeric, real and double precision

    NULL

    Los números de MariaDB no tienen NaN ni Infinity, así que esos valores se vuelven NULL y el informe los cuenta.

    Línea del informe: invalid_value_null

  • NOT NULL columns with values that become NULL

    sin NOT NULL

    Una columna cuyos valores tuvieron que volverse NULL no puede conservar NOT NULL, o la carga se detendría.

    Línea del informe: not_null_relaxed

  • enum types

    enum(...) con las mismas etiquetas

    El ENUM de MariaDB conserva las etiquetas en su orden.

  • uuid, inet, cidr

    uuid como uuid, inet y cidr como varchar(43)

    MariaDB tiene un tipo uuid; las direcciones conservan su texto, máscara incluida.

  • bytea

    blob, mediumblob o longblob; varbinary(3072) en una clave

    Los bytes siguen siendo bytes.

  • bit(n)

    bit(n) hasta 64, text si son más

    Una cadena de bits de hasta 64 bits es el número que forman sus bits; una más larga conserva sus dígitos.

  • citext and nondeterministic collations

    comparación exacta

    Las tablas usan utf8mb4_bin para que el texto se compare exactamente, como el de PostgreSQL; las columnas que no distinguían mayúsculas en el origen pierden eso.

    Línea del informe: case_insensitive_collation

  • serial, identity

    AUTO_INCREMENT, siguiendo después del id más alto

    Cuenta la columna que encabeza la clave primaria; el contador sigue donde estaba la secuencia.

  • a second serial or identity column in a table

    entero simple

    MariaDB cuenta una columna por tabla; cualquier otra conserva sus valores sin contador.

    Línea del informe: counter_dropped

  • sequences not owned by a column

    CREATE SEQUENCE, en el valor que entrega a continuación

    Las secuencias de MariaDB funcionan de la misma forma.

  • generated columns

    columnas generadas, STORED como en el origen

    MariaDB las calcula de la misma forma.

  • generated columns with functions MariaDB lacks

    una columna simple

    Una fórmula que no se puede escribir para MariaDB deja una columna simple y una línea en el informe.

    Línea del informe: generated_not_translated

  • defaults with functions MariaDB lacks, and defaults from a sequence

    sin valor predeterminado

    Un valor predeterminado que no se puede escribir para MariaDB se deja fuera y aparece en el informe.

    Línea del informe: default_not_translated

  • CHECK constraints

    traducido, en línea en CREATE TABLE

    MySQL 8.0.16 y MariaDB los aplican; MySQL 5.7 los conserva sin comprobarlos.

  • CHECK constraints with functions MariaDB lacks

    no se crea

    Un CHECK que no se puede escribir para MariaDB se deja fuera y aparece en el informe.

    Línea del informe: check_skipped

  • CHECK ... NOT VALID

    no se crea

    PostgreSQL nunca comprobó las filas que ya estaban, así que pueden no cumplirlo.

    Línea del informe: check_not_valid

  • gin, gist, brin and hash indexes, partial and expression indexes

    no se crea

    MariaDB solo tiene índices b-tree, de texto completo y espaciales, sobre columnas completas, sin WHERE.

    Línea del informe: index_skipped

  • foreign keys

    claves foráneas, cargadas con FOREIGN_KEY_CHECKS=0

    Las filas cargan en cualquier orden, y después las claves comprueban las filas nuevas.

  • foreign keys to tables the dump doesn't create

    no se crea

    Una clave no puede nombrar una tabla que no existe.

    Línea del informe: foreign_key_skipped

  • partitioned tables

    una tabla con las filas de todas las particiones

    Las filas son las mismas; vuelve a particionar la tabla en MariaDB si lo necesita.

    Línea del informe: partitions_dropped

  • schemas

    una base de datos, con el nombre del esquema delante de cada tabla

    Los esquemas de MariaDB son bases de datos, que un script cargado en una sola base de datos no puede crear; las tablas de public conservan sus nombres.

    Línea del informe: schemas_merged

  • views, functions, procedures, triggers, rules, policies, extensions and types

    listados en el informe

    Su código está escrito en el lenguaje de PostgreSQL, así que se listan para que los vuelvas a crear.

    Línea del informe: not_converted_objects

  • dumps without CREATE TABLE (--data-only)

    tipos leídos de los valores

    Un volcado solo de datos solo tiene filas, así que los tipos salen de los valores.

    Línea del informe: no_schema

  • expressions in INSERT values

    NULL

    Un convertidor que no ejecuta una base de datos no puede evaluarlas.

    Línea del informe: expression_value

  • types IntoSQL doesn't know

    longtext

    El texto admite cualquier valor; cambia el tipo después de cargar.

    Línea del informe: unknown_type

  • text that isn't valid in its encoding

    los bytes incorrectos como carácter de reemplazo

    El texto tiene que ser utf8mb4 válido.

    Línea del informe: invalid_utf8_replaced

  • text decoded twice (ñ)

    se copia tal cual

    El volcado contiene exactamente estos caracteres, así que se copian; el informe los señala.

    Línea del informe: mojibake_suspected

En PostgreSQLEn MariaDBLínea del informe
booleantinyint(1)El BOOLEAN de MariaDB es TINYINT(1): true es 1 y false es 0.
varchar(n), char(n), textvarchar(n) hasta 1024 caracteres, char(n) hasta 255, text si son másEl texto conserva cada carácter como utf8mb4. Una columna en una clave es varchar(768) como máximo, lo más largo que admite una clave.
numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holdsvarcharEl decimal de MariaDB admite 65 dígitos con 30 decimales. Los números más anchos se guardan como texto para que cada dígito siga exacto; numeric sin precisión es decimal(65,30) cuando sus valores caben.decimal_as_text
moneydecimal(19,2)MariaDB no tiene tipo money. El importe se guarda como número, sin el símbolo de moneda que agregó la configuración regional del servidor.type_replaced
intervalvarchar(100) con el texto de PostgreSQLEl TIME de MariaDB admite duraciones de hasta 838 horas, pero un interval tiene meses y días; su texto conserva cada parte.type_replaced
arrays (integer[], text[]...)arreglos jsonMariaDB no tiene arreglos. Un arreglo JSON conserva cada elemento y NULL, y las funciones JSON lo leen.type_replaced
ranges, geometric types, tsvector, xml, hstore, composite and extension typeslongtext con el texto de PostgreSQLMariaDB no tiene un tipo equivalente, así que cada valor conserva el texto que escribió PostgreSQL.type_replaced
json, jsonbjsonLos mismos valores JSON; el orden de las claves y los espacios de jsonb son los del servidor.
timestampdatetime(p)Un timestamp sin zona horaria es una lectura de reloj, como datetime.
timestamp with time zonedatetime(p) en UTCEl TIMESTAMP de MariaDB solo llega a 2038, así que los instantes se guardan como datetime en UTC, el mismo instante sea cual sea el desfase que escribió el volcado.moments_as_utc
timetime(p)El TIME de MariaDB admite cualquier hora del día, 24:00:00 incluido.
infinity, -infinity, BC dates and years past 9999NULLMariaDB guarda los años 1000 a 9999 sin infinito. Esos valores se vuelven NULL y el informe los cuenta.date_out_of_range
NaN and Infinity in numeric, real and double precisionNULLLos números de MariaDB no tienen NaN ni Infinity, así que esos valores se vuelven NULL y el informe los cuenta.invalid_value_null
NOT NULL columns with values that become NULLsin NOT NULLUna columna cuyos valores tuvieron que volverse NULL no puede conservar NOT NULL, o la carga se detendría.not_null_relaxed
enum typesenum(...) con las mismas etiquetasEl ENUM de MariaDB conserva las etiquetas en su orden.
uuid, inet, cidruuid como uuid, inet y cidr como varchar(43)MariaDB tiene un tipo uuid; las direcciones conservan su texto, máscara incluida.
byteablob, mediumblob o longblob; varbinary(3072) en una claveLos bytes siguen siendo bytes.
bit(n)bit(n) hasta 64, text si son másUna cadena de bits de hasta 64 bits es el número que forman sus bits; una más larga conserva sus dígitos.
citext and nondeterministic collationscomparación exactaLas tablas usan utf8mb4_bin para que el texto se compare exactamente, como el de PostgreSQL; las columnas que no distinguían mayúsculas en el origen pierden eso.case_insensitive_collation
serial, identityAUTO_INCREMENT, siguiendo después del id más altoCuenta la columna que encabeza la clave primaria; el contador sigue donde estaba la secuencia.
a second serial or identity column in a tableentero simpleMariaDB cuenta una columna por tabla; cualquier otra conserva sus valores sin contador.counter_dropped
sequences not owned by a columnCREATE SEQUENCE, en el valor que entrega a continuaciónLas secuencias de MariaDB funcionan de la misma forma.
generated columnscolumnas generadas, STORED como en el origenMariaDB las calcula de la misma forma.
generated columns with functions MariaDB lacksuna columna simpleUna fórmula que no se puede escribir para MariaDB deja una columna simple y una línea en el informe.generated_not_translated
defaults with functions MariaDB lacks, and defaults from a sequencesin valor predeterminadoUn valor predeterminado que no se puede escribir para MariaDB se deja fuera y aparece en el informe.default_not_translated
CHECK constraintstraducido, en línea en CREATE TABLEMySQL 8.0.16 y MariaDB los aplican; MySQL 5.7 los conserva sin comprobarlos.
CHECK constraints with functions MariaDB lacksno se creaUn CHECK que no se puede escribir para MariaDB se deja fuera y aparece en el informe.check_skipped
CHECK ... NOT VALIDno se creaPostgreSQL nunca comprobó las filas que ya estaban, así que pueden no cumplirlo.check_not_valid
gin, gist, brin and hash indexes, partial and expression indexesno se creaMariaDB solo tiene índices b-tree, de texto completo y espaciales, sobre columnas completas, sin WHERE.index_skipped
foreign keysclaves foráneas, cargadas con FOREIGN_KEY_CHECKS=0Las filas cargan en cualquier orden, y después las claves comprueban las filas nuevas.
foreign keys to tables the dump doesn't createno se creaUna clave no puede nombrar una tabla que no existe.foreign_key_skipped
partitioned tablesuna tabla con las filas de todas las particionesLas filas son las mismas; vuelve a particionar la tabla en MariaDB si lo necesita.partitions_dropped
schemasuna base de datos, con el nombre del esquema delante de cada tablaLos esquemas de MariaDB son bases de datos, que un script cargado en una sola base de datos no puede crear; las tablas de public conservan sus nombres.schemas_merged
views, functions, procedures, triggers, rules, policies, extensions and typeslistados en el informeSu código está escrito en el lenguaje de PostgreSQL, así que se listan para que los vuelvas a crear.not_converted_objects
dumps without CREATE TABLE (--data-only)tipos leídos de los valoresUn volcado solo de datos solo tiene filas, así que los tipos salen de los valores.no_schema
expressions in INSERT valuesNULLUn convertidor que no ejecuta una base de datos no puede evaluarlas.expression_value
types IntoSQL doesn't knowlongtextEl texto admite cualquier valor; cambia el tipo después de cargar.unknown_type
text that isn't valid in its encodinglos bytes incorrectos como carácter de reemplazoEl texto tiene que ser utf8mb4 válido.invalid_utf8_replaced
text decoded twice (ñ)se copia tal cualEl volcado contiene exactamente estos caracteres, así que se copian; el informe los señala.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.

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

¿No encuentras la respuesta? Escríbenos desde la página de contacto y te responde una persona. Página de contacto

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