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

# Migrar SQLite a MariaDB en tu navegador

Suelta un archivo de base de datos SQLite (.db, .sqlite, .sqlite3) o el SQL que escribe .dump de sqlite3, y descarga un script de MariaDB con las mismas tablas, claves, índices y datos. Cada columna recibe el tipo en el que caben sus valores, y cada valor que MariaDB no puede guardar tal cual aparece en el informe.

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

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

## Qué cambia de SQLite 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 SQLite | En MariaDB | Línea del informe |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | el tipo en el que caben todos los valores de la columna |  |
| BOOLEAN, BOOL | tinyint(1) |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | varchar(n) hasta 1024 caracteres, tipos text si son más |  |
| DECIMAL(p,s), NUMERIC | el tipo exacto cuando cada valor cabe en él, si no un double |  |
| BLOB, and columns holding bytes | tipos blob |  |
| DATE, DATETIME, TIMESTAMP holding ISO 8601 text | date, datetime(p) |  |
| JSON holding JSON text | json |  |
| Infinity in REAL columns | NULL | `invalid_value_null` |
| INTEGER PRIMARY KEY, AUTOINCREMENT | AUTO_INCREMENT, siguiendo después del id más alto o del valor de sqlite_sequence |  |
| COLLATE NOCASE | comparación exacta (utf8mb4_bin) | `case_insensitive_collation` |
| generated columns | columnas generadas, STORED o VIRTUAL como en el origen |  |
| generated columns with functions IntoSQL doesn't write, and the || operator | una columna simple | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (strftime, randomblob) | sin valor predeterminado | `default_not_translated` |
| CHECK constraints | traducidos |  |
| CHECK constraints with functions IntoSQL doesn't write | no se crea | `check_skipped` |
| partial and expression indexes | no se crea | `index_skipped` |
| foreign keys (unenforced unless PRAGMA foreign_keys=ON) | claves foráneas, cargadas con FOREIGN_KEY_CHECKS=0 |  |
| foreign keys to tables the dump doesn't create | no se crea | `foreign_key_skipped` |
| primary keys holding NULL, and NOT NULL columns with values that become NULL | sin NOT NULL | `not_null_relaxed` |
| views, triggers and virtual tables (FTS, R*Tree) | 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 other than the text functions dumps write | NULL | `expression_value` |
| NUL characters in text | se conserva |  |
| text that isn't valid UTF-8 | 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 < sqlite.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 SQLite para el mejor resultado

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

- El archivo de la base de datos se convierte tal cual, leído página por página en tu navegador. Cierra primero la app que escribe en él, para que ningún cambio se quede en su archivo -wal.
- sqlite3 app.db .dump > app.sql escribe la misma base de datos como SQL, que también se convierte, en .sql o .sql.gz.
- DB Browser for SQLite escribe ese SQL con File, Export, Database to SQL file, y también lo hace iterdump() de Python.

## Qué no se convierte

Las vistas y los disparadores se escriben en el lenguaje propio de SQLite. Aparecen en el informe por nombre, nunca se descartan en silencio, para que puedas reescribirlos para MariaDB. Las tablas virtuales, como FTS5 y R*Tree, también aparecen, y sus tablas internas se dejan fuera.

## Preguntas sobre SQLite 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.

### ¿Puedo convertir directamente el archivo .db?

Sí. Suelta el archivo .db, .sqlite o .sqlite3: se lee en tu navegador y nunca se sube. El texto con caracteres NUL y cada dígito de un double llegan tal como están guardados, algo que un .dump puede recortar.

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

Archivos de base de datos de SQLite 3.0 en adelante, en UTF-8 o UTF-16, y volcados del .dump del shell sqlite3 o de iterdump() de Python. Cada archivo y volcado de prueba viene de sqlite3 3.31 a 3.54, con tablas STRICT y WITHOUT ROWID incluidas, y se compara con su origen celda por celda.

### ¿Cómo se deciden los tipos de columna si SQLite no los aplica?

El tipo declarado es una pista y los valores deciden: una columna se vuelve un tipo integer, decimal, double, date, datetime, tinyint(1), blob o text cuando cada valor cabe en él. Una columna con valores mezclados conserva su texto, y el informe dice cuáles.

### ¿Se conservan INTEGER PRIMARY KEY y AUTOINCREMENT?

Sí. Una INTEGER PRIMARY KEY se vuelve AUTO_INCREMENT, cada fila conserva su id, y el siguiente id sigue después del más alto, o después del valor de sqlite_sequence con AUTOINCREMENT.

### ¿Qué pasa con las vistas 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 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 SQLite

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

## Hacia MariaDB

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

## Guía y todos los pares

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