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

# Migrar MariaDB a SQLite en tu navegador

Suelta un volcado de mariadb-dump, mysqldump, phpMyAdmin o Adminer, en .sql o .sql.gz, y descarga un script de SQLite con las mismas tablas, claves, índices y datos. Cada valor que SQLite no puede guardar tal cual, y cada objeto que no admite, aparece en el informe.

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

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

## Qué cambia de MariaDB a SQLite

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 MariaDB | En SQLite | Línea del informe |
| --- | --- | --- |
| TINYINT(1), BOOL | INTEGER con los valores tal cual |  |
| UNSIGNED integers | INTEGER con un CHECK de que no sea negativo; BIGINT UNSIGNED con valores mayores que 2^63-1 es TEXT | `unsigned_widened` |
| ZEROFILL and display widths | se descarta | `zerofill_dropped` |
| FLOAT(M,D) | REAL, sin la escala | `float_scale_dropped` |
| DECIMAL(p,s) | DECIMAL(p,s) hasta 15 dígitos; TEXT si son más | `decimal_as_text` |
| BIT(1), BIT(n) | INTEGER con el valor de los bits; BIT(64) como dígitos en TEXT |  |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | NULL | `invalid_date_null` |
| NOT NULL columns with values that become NULL | sin NOT NULL | `not_null_relaxed` |
| DEFAULT '0000-00-00' | sin valor predeterminado | `zero_date_default` |
| TIME | TIME como texto, tal como lo escribe MySQL, con duraciones incluidas |  |
| YEAR | INTEGER con un CHECK de su rango |  |
| CHAR(n), VARCHAR(n) | VARCHAR(n), sin aplicar el límite |  |
| DATETIME | DATETIME como texto ISO 8601 |  |
| TIMESTAMP | TIMESTAMP como texto ISO 8601 en UTC; la zona que indica el volcado, UTC si no indica ninguna | `timestamp_zone_assumed` |
| ENUM | TEXT con un CHECK de sus valores |  |
| ENUM holding '' (MySQL's error value) | el valor vacío, que el CHECK admite | `enum_invalid_value` |
| ENUM holding values outside its list | sin CHECK | `enum_check_skipped` |
| SET | TEXT tal como lo escribe MySQL ('a,b') |  |
| JSON | TEXT |  |
| NUL bytes in text | se conserva |  |
| text that isn't valid in its character set | los bytes incorrectos como carácter de reemplazo | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | se copia tal cual | `mojibake_suspected` |
| AUTO_INCREMENT | INTEGER PRIMARY KEY AUTOINCREMENT, con el contador después de los ids copiados |  |
| AUTO_INCREMENT on part of a key or outside one | INTEGER sin contador | `identity_without_counter` |
| ON UPDATE CURRENT_TIMESTAMP | un disparador AFTER UPDATE | `on_update_trigger` |
| generated columns | GENERATED ALWAYS AS, VIRTUAL o STORED como en el origen |  |
| generated columns with functions SQLite lacks | una columna simple | `generated_not_translated` |
| INVISIBLE columns | columnas normales | `invisible_column` |
| CHECK constraints | traducido, en línea en CREATE TABLE |  |
| CHECK constraints with functions SQLite lacks | no se crea | `check_skipped` |
| CHECK ... NOT ENFORCED | no se crea | `check_not_enforced` |
| defaults with functions SQLite lacks | sin valor predeterminado | `default_not_translated` |
| keys and indexes on a prefix, c(20) | un índice sobre substr(c, 1, 20) | `prefix_unique` |
| FULLTEXT indexes | no se crea | `fulltext_not_created` |
| SPATIAL indexes | no se crea | `spatial_index_not_created` |
| functional indexes SQLite can't write | no se crea | `index_skipped` |
| foreign keys | en CREATE TABLE, cargadas sin comprobar, luego listadas con PRAGMA foreign_key_check |  |
| foreign keys to columns without a unique key | no se crea | `foreign_key_skipped` |
| table, index and column names | tal como están escritos; renombrados cuando solo difieren en mayúsculas o se repite un nombre de índice | `identifier_renamed` |
| GEOMETRY, POINT, POLYGON... | WKB en un BLOB | `geometry_as_blob` |
| INET4, INET6, UUID (MariaDB) | TEXT |  |
| BINARY, VARBINARY, BLOB | BLOB |  |
| PARTITION BY | una sola tabla | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | una tabla con las filas actuales | `system_versioning_dropped` |
| MyISAM, MEMORY and other engines | una tabla normal | `engine_dropped` |
| dumps of several databases | un archivo, cada tabla con el nombre de su base de datos delante | `databases_merged` |
| views, triggers, procedures, functions and events | listados en el informe | `not_converted_objects` |
| dumps without CREATE TABLE | tipos leídos de los valores | `no_schema` |
| geometries in a dump without CREATE TABLE | WKB en un BLOB | `geometry_as_blob` |
| _ci collations | comparación exacta | `case_insensitive_collation` |
| SET NAMES utf8 from utf8mb4 tables | se convierte, con una advertencia | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | se lee como Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | se lee como UTF-8, con una advertencia | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | se evalúan |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | el valor predeterminado de la columna | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | filas simples | `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) | no se crea | `sequence_not_converted` |
| VECTOR(n) (MariaDB 11.7+) | TEXT con los números de punto flotante como arreglo JSON | `type_replaced` |

## Carga el script en SQLite

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
sqlite3 -bail mydb.sqlite < mariadb.sqlite.sql
```

Las claves foráneas se declaran en cada tabla y las filas se cargan con la comprobación de claves foráneas desactivada. Luego el script lista cada fila que apunta a una fila que no existe, en lugar de fallar a medias.

Para un volcado grande, carga en un archivo nuevo en un disco local. El script carga todo en una sola transacción con la sincronización desactivada, así que va a la velocidad del disco, y una carga que se detiene a medias no deja tablas incompletas.

La línea de comandos carga el archivo directo en una base de datos SQLite, sin escribir un script. Es gratis.

## Haz el volcado de MariaDB para el mejor resultado

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

- --default-character-set=utf8mb4 conserva los emoji y otros caracteres de 4 bytes, que un volcado utf8mb3 pierde antes de que el convertidor lo vea.
- --hex-blob escribe las columnas binarias y los valores VECTOR en hexadecimal, que sobrevive a la copia entre sistemas.
- --routines --triggers --events agregan esos objetos al volcado, para que el informe pueda listarlos.

## Qué no se convierte

Las vistas, los disparadores, los procedimientos almacenados, las funciones y los eventos se escriben en el lenguaje propio de MariaDB. Aparecen en el informe por nombre, nunca se descartan en silencio, para que puedas reescribirlos para SQLite.

## Preguntas sobre MariaDB a SQLite

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

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

Volcados de mariadb-dump y mysqldump en MariaDB 10.3 a 12, con un INSERT por tabla o uno por fila. Cada volcado de prueba viene de MariaDB 10.11, 11.4 y 11.8 y se compara con su origen celda por celda.

### ¿Se conservan las columnas UUID, INET6, JSON y VECTOR?

Las columnas UUID e INET se vuelven text, JSON text y VECTOR un arreglo JSON de sus números. Las fechas cero se vuelven NULL y el informe las cuenta.

### ¿Se conservan los valores AUTO_INCREMENT y las secuencias?

Una columna AUTO_INCREMENT que es toda la clave primaria de la tabla se vuelve INTEGER PRIMARY KEY AUTOINCREMENT y sigue después del id más alto. SQLite no tiene secuencias, así que el informe las indica.

### ¿Qué pasa con los procedimientos almacenados y los disparadores?

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 SQLite carga el script?

SQLite 3.31 y posteriores. Cada volcado de prueba carga en 3.31 y 3.54, y se detiene en el primer error si algo sale mal.

## Desde MariaDB

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

## Hacia SQLite

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

## Guía y todos los pares

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