---
title: "Migrar MariaDB para SQLite no navegador"
description: "Migre um banco MariaDB para SQLite: converta o dump em um script com as mesmas tabelas, chaves, sequências e dados, e um relatório de cada mudança."
canonical: https://intosql.com/pt-br/mariadb-para-sqlite
last_updated: 2026-10-15
---

# Migrar MariaDB para SQLite no navegador

Solte um dump do mariadb-dump, mysqldump, phpMyAdmin ou Adminer, em .sql ou .sql.gz, e baixe um script do SQLite com as mesmas tabelas, chaves, índices e dados. Cada valor que o SQLite não aceita como está, e cada objeto que ele não traz, aparece no relatório.

[Guia de migração de MariaDB para SQLite](https://intosql.com/docs/migrations/mariadb-to-sqlite)

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

## O que muda do MariaDB para o SQLite

Cada linha é uma regra que o conversor aplica, com a linha do relatório que ele escreve quando a regra muda algo nos seus dados.

| No MariaDB | No SQLite | Linha do relatório |
| --- | --- | --- |
| TINYINT(1), BOOL | INTEGER com os valores como estão |  |
| UNSIGNED integers | INTEGER com um CHECK de que não é negativo; BIGINT UNSIGNED com valores acima de 2^63-1 vira TEXT | `unsigned_widened` |
| ZEROFILL and display widths | descartado | `zerofill_dropped` |
| FLOAT(M,D) | REAL, sem a escala | `float_scale_dropped` |
| DECIMAL(p,s) | DECIMAL(p,s) até 15 dígitos; TEXT acima disso | `decimal_as_text` |
| BIT(1), BIT(n) | INTEGER com o valor dos bits; BIT(64) como dígitos em TEXT |  |
| 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 removido | `not_null_relaxed` |
| DEFAULT '0000-00-00' | sem valor padrão | `zero_date_default` |
| TIME | TIME como texto, do jeito que o MySQL escreve, incluindo durações |  |
| YEAR | INTEGER com um CHECK do intervalo |  |
| CHAR(n), VARCHAR(n) | VARCHAR(n), sem limite aplicado |  |
| DATETIME | DATETIME como texto ISO 8601 |  |
| TIMESTAMP | TIMESTAMP como texto ISO 8601 em UTC; no fuso que o dump informa, UTC quando ele não informa nenhum | `timestamp_zone_assumed` |
| ENUM | TEXT com um CHECK dos valores |  |
| ENUM holding '' (MySQL's error value) | o valor vazio, permitido pelo CHECK | `enum_invalid_value` |
| ENUM holding values outside its list | sem CHECK | `enum_check_skipped` |
| SET | TEXT como o MySQL escreve ('a,b') |  |
| JSON | TEXT |  |
| NUL bytes in text | mantido |  |
| text that isn't valid in its character set | os bytes inválidos como o caractere de substituição | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copiado como está | `mojibake_suspected` |
| AUTO_INCREMENT | INTEGER PRIMARY KEY AUTOINCREMENT, com o contador ajustado depois dos ids copiados |  |
| AUTO_INCREMENT on part of a key or outside one | INTEGER sem contador | `identity_without_counter` |
| ON UPDATE CURRENT_TIMESTAMP | um gatilho AFTER UPDATE | `on_update_trigger` |
| generated columns | GENERATED ALWAYS AS, VIRTUAL ou STORED como na origem |  |
| generated columns with functions SQLite lacks | uma coluna simples | `generated_not_translated` |
| INVISIBLE columns | colunas comuns | `invisible_column` |
| CHECK constraints | traduzido, dentro do CREATE TABLE |  |
| CHECK constraints with functions SQLite lacks | não criado | `check_skipped` |
| CHECK ... NOT ENFORCED | não criado | `check_not_enforced` |
| defaults with functions SQLite lacks | sem valor padrão | `default_not_translated` |
| keys and indexes on a prefix, c(20) | um índice sobre substr(c, 1, 20) | `prefix_unique` |
| FULLTEXT indexes | não criado | `fulltext_not_created` |
| SPATIAL indexes | não criado | `spatial_index_not_created` |
| functional indexes SQLite can't write | não criado | `index_skipped` |
| foreign keys | no CREATE TABLE, carregadas sem verificação, depois listadas por PRAGMA foreign_key_check |  |
| foreign keys to columns without a unique key | não criada | `foreign_key_skipped` |
| table, index and column names | como escritos; renomeados quando diferem só em maiúsculas e minúsculas ou quando um nome de índice se repete | `identifier_renamed` |
| GEOMETRY, POINT, POLYGON... | WKB em um BLOB | `geometry_as_blob` |
| INET4, INET6, UUID (MariaDB) | TEXT |  |
| BINARY, VARBINARY, BLOB | BLOB |  |
| PARTITION BY | uma tabela | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | uma tabela com as linhas atuais | `system_versioning_dropped` |
| MyISAM, MEMORY and other engines | uma tabela comum | `engine_dropped` |
| dumps of several databases | um arquivo, cada tabela com o nome do seu banco na frente | `databases_merged` |
| views, triggers, procedures, functions and events | listados no relatório | `not_converted_objects` |
| dumps without CREATE TABLE | tipos deduzidos dos valores | `no_schema` |
| geometries in a dump without CREATE TABLE | WKB em um BLOB | `geometry_as_blob` |
| _ci collations | comparação exata | `case_insensitive_collation` |
| SET NAMES utf8 from utf8mb4 tables | convertido, com um aviso | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | lido como Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | lido como UTF-8, com um aviso | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | avaliadas |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | o valor padrão da coluna | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | linhas 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) | não criado | `sequence_not_converted` |
| VECTOR(n) (MariaDB 11.7+) | TEXT com os floats como array JSON | `type_replaced` |

## Carregue o script no SQLite

O script cria as tabelas, copia as linhas e depois adiciona chaves, índices e chaves estrangeiras, então carrega rápido e para no primeiro erro.

```shell
sqlite3 -bail mydb.sqlite < mariadb.sqlite.sql
```

As chaves estrangeiras são declaradas em cada tabela e as linhas carregam com a verificação de chaves estrangeiras desligada. Depois o script lista cada linha que aponta para uma linha que não existe, em vez de falhar no meio do caminho.

Para um dump grande, carregue em um arquivo novo em um disco local. O script carrega tudo em uma transação com a sincronização desligada, então roda na velocidade do disco, e uma carga interrompida no meio não deixa tabelas incompletas.

A linha de comando carrega o arquivo direto em um banco SQLite, sem escrever um script. É grátis.

## Gere o dump do MariaDB para o melhor resultado

O conversor lê o que o dump contém. Estas opções mantêm mais dos seus dados nele:

- --default-character-set=utf8mb4 mantém emoji e outros caracteres de 4 bytes, que um dump em utf8mb3 perde antes de o conversor vê-lo.
- --hex-blob escreve as colunas binárias e os valores VECTOR em hexadecimal, o que sobrevive à cópia entre sistemas.
- --routines --triggers --events adicionam esses objetos ao dump, para que o relatório possa listá-los.

## O que não é convertido

Visões, gatilhos, procedimentos armazenados, funções e eventos são escritos na linguagem própria do MariaDB. Eles aparecem no relatório pelo nome, nunca são descartados em silêncio, para que você possa reescrevê-los para o SQLite.

## Perguntas sobre MariaDB para SQLite

### Meu dump é enviado?

Não. O conversor roda no seu navegador e lê o dump do seu disco em partes, então ele nunca sai do seu computador. O app para desktop e a linha de comando também convertem no seu computador.

### Qual o tamanho máximo do dump?

O conversor nunca guarda o dump inteiro na memória: ele lê o arquivo duas vezes, por intervalos, e escreve o script à medida que avança. Dumps de vários gigabytes são convertidos no navegador, no app para desktop e com a linha de comando.

### De quais versões do MariaDB o dump pode vir?

Dumps do mariadb-dump e do mysqldump no MariaDB 10.3 ao 12, com um INSERT por tabela ou um por linha. Cada dump de teste vem do MariaDB 10.11, 11.4 e 11.8 e é comparado com a origem célula por célula.

### As colunas UUID, INET6, JSON e VECTOR são mantidas?

Colunas UUID e INET viram text, JSON text, e VECTOR um array JSON dos seus floats. Datas zero viram NULL e o relatório as conta.

### Os valores de AUTO_INCREMENT e as sequências são mantidos?

Uma coluna AUTO_INCREMENT que é toda a chave primária da tabela vira INTEGER PRIMARY KEY AUTOINCREMENT e continua depois do maior id. O SQLite não tem sequências, então elas aparecem no relatório.

### E os procedimentos armazenados e gatilhos?

Eles aparecem no relatório pelo nome e não são convertidos, porque cada banco de dados os escreve na sua própria linguagem.

### Em quais versões do SQLite o script carrega?

SQLite 3.31 e posteriores. Cada dump de teste carrega no 3.31 e no 3.54 e para no primeiro erro se algo der errado.

## De MariaDB

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

## Para SQLite

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

## Guia e todos os pares

- [SQLite para MariaDB](https://intosql.com/pt-br/sqlite-para-mariadb)
- [Guia de migração de MariaDB para SQLite](https://intosql.com/docs/migrations/mariadb-to-sqlite)
- [Tipos de dados de MariaDB para SQLite](https://intosql.com/docs/types/mariadb-to-sqlite)
- [Todos os pares de bancos de dados](https://intosql.com/pt-br/migracao-de-banco-de-dados)
