---
title: "Migracja MariaDB do SQLite w przeglądarce"
description: "Migruj bazę MariaDB do SQLite: zamień jej zrzut w skrypt z tymi samymi tabelami, kluczami, sekwencjami i danymi oraz raportem każdej zmiany."
canonical: https://intosql.com/pl/mariadb-do-sqlite
last_updated: 2026-10-15
---

# Migracja MariaDB do SQLite w przeglądarce

Upuść zrzut z mariadb-dump, mysqldump, phpMyAdmin lub Adminer jako .sql lub .sql.gz i pobierz skrypt SQLite z tymi samymi tabelami, kluczami, indeksami i danymi. Każda wartość, której SQLite nie może przechować bez zmian, i każdy obiekt, którego nie przenosi, są wymienione w raporcie.

[Przewodnik migracji MariaDB do SQLite](https://intosql.com/docs/migrations/mariadb-to-sqlite)

[Typy danych z MariaDB do SQLite](https://intosql.com/docs/types/mariadb-to-sqlite)

## Co zmienia się między MariaDB a SQLite

Każdy wiersz to reguła stosowana przez konwerter, z wpisem, który dodaje do raportu, gdy reguła coś zmienia w twoich danych.

| W MariaDB | W SQLite | Wpis w raporcie |
| --- | --- | --- |
| TINYINT(1), BOOL | INTEGER z wartościami bez zmian |  |
| UNSIGNED integers | INTEGER z CHECK, że wartość nie jest ujemna; BIGINT UNSIGNED z wartościami powyżej 2^63-1 to TEXT | `unsigned_widened` |
| ZEROFILL and display widths | usunięte | `zerofill_dropped` |
| FLOAT(M,D) | REAL, bez skali | `float_scale_dropped` |
| DECIMAL(p,s) | DECIMAL(p,s) do 15 cyfr; powyżej TEXT | `decimal_as_text` |
| BIT(1), BIT(n) | INTEGER z wartością bitów; BIT(64) jako cyfry w 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 usunięte | `not_null_relaxed` |
| DEFAULT '0000-00-00' | brak wartości domyślnej | `zero_date_default` |
| TIME | TIME jako tekst w zapisie MySQL, łącznie z czasami trwania |  |
| YEAR | INTEGER z CHECK zakresu |  |
| CHAR(n), VARCHAR(n) | VARCHAR(n), bez wymuszania |  |
| DATETIME | DATETIME jako tekst ISO 8601 |  |
| TIMESTAMP | TIMESTAMP jako tekst ISO 8601 w UTC; strefa podana w zrzucie, UTC, gdy jej nie podaje | `timestamp_zone_assumed` |
| ENUM | TEXT z CHECK dozwolonych wartości |  |
| ENUM holding '' (MySQL's error value) | pusta wartość dopuszczona przez CHECK | `enum_invalid_value` |
| ENUM holding values outside its list | bez CHECK | `enum_check_skipped` |
| SET | TEXT w zapisie MySQL ('a,b') |  |
| JSON | TEXT |  |
| NUL bytes in text | zachowane |  |
| text that isn't valid in its character set | błędne bajty jako znak zastępczy | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | skopiowane bez zmian | `mojibake_suspected` |
| AUTO_INCREMENT | INTEGER PRIMARY KEY AUTOINCREMENT, z licznikiem ustawionym za skopiowanymi id |  |
| AUTO_INCREMENT on part of a key or outside one | INTEGER bez licznika | `identity_without_counter` |
| ON UPDATE CURRENT_TIMESTAMP | wyzwalacz AFTER UPDATE | `on_update_trigger` |
| generated columns | GENERATED ALWAYS AS, VIRTUAL lub STORED jak w źródle |  |
| generated columns with functions SQLite lacks | zwykła kolumna | `generated_not_translated` |
| INVISIBLE columns | zwykłe kolumny | `invisible_column` |
| CHECK constraints | przetłumaczone, wewnątrz CREATE TABLE |  |
| CHECK constraints with functions SQLite lacks | nie jest tworzone | `check_skipped` |
| CHECK ... NOT ENFORCED | nie jest tworzone | `check_not_enforced` |
| defaults with functions SQLite lacks | brak wartości domyślnej | `default_not_translated` |
| keys and indexes on a prefix, c(20) | indeks na substr(c, 1, 20) | `prefix_unique` |
| FULLTEXT indexes | nie jest tworzone | `fulltext_not_created` |
| SPATIAL indexes | nie jest tworzone | `spatial_index_not_created` |
| functional indexes SQLite can't write | nie jest tworzony | `index_skipped` |
| foreign keys | w CREATE TABLE, ładowane bez sprawdzania, potem wypisywane przez PRAGMA foreign_key_check |  |
| foreign keys to columns without a unique key | nie jest tworzony | `foreign_key_skipped` |
| table, index and column names | jak w źródle; zmienione, gdy różnią się tylko wielkością liter lub nazwa indeksu się powtarza | `identifier_renamed` |
| GEOMETRY, POINT, POLYGON... | WKB w BLOB | `geometry_as_blob` |
| INET4, INET6, UUID (MariaDB) | TEXT |  |
| BINARY, VARBINARY, BLOB | BLOB |  |
| PARTITION BY | jedna tabela | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | tabela z bieżącymi wierszami | `system_versioning_dropped` |
| MyISAM, MEMORY and other engines | zwykła tabela | `engine_dropped` |
| dumps of several databases | jeden plik, nazwa każdej tabeli zaczyna się od nazwy jej bazy | `databases_merged` |
| views, triggers, procedures, functions and events | wymienione w raporcie | `not_converted_objects` |
| dumps without CREATE TABLE | typy odczytane z wartości | `no_schema` |
| geometries in a dump without CREATE TABLE | WKB w BLOB | `geometry_as_blob` |
| _ci collations | dokładne porównanie | `case_insensitive_collation` |
| SET NAMES utf8 from utf8mb4 tables | przekonwertowane, z ostrzeżeniem | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | odczytane jako Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | odczytane jako UTF-8, z ostrzeżeniem | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | obliczone |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | wartość domyślna kolumny | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | zwykłe wiersze | `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) | nie jest tworzone | `sequence_not_converted` |
| VECTOR(n) (MariaDB 11.7+) | TEXT z liczbami float jako tablicą JSON | `type_replaced` |

## Załaduj skrypt do SQLite

Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.

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

Klucze obce są deklarowane w każdej tabeli, a wiersze ładują się z wyłączonym sprawdzaniem kluczy obcych. Potem skrypt wypisuje każdy wiersz, który wskazuje na nieistniejący wiersz, zamiast przerwać w połowie.

Duży zrzut ładuj do nowego pliku na dysku lokalnym. Skrypt ładuje wszystko w jednej transakcji z wyłączoną synchronizacją, więc działa z szybkością dysku, a przerwane ładowanie nie zostawia niepełnych tabel.

Wiersz poleceń ładuje plik prosto do bazy SQLite, bez pisania skryptu. To nic nie kosztuje.

## Jak zrobić zrzut MariaDB dla najlepszego wyniku

Konwerter odczytuje to, co zawiera zrzut. Te opcje zachowują w nim więcej twoich danych:

- --default-character-set=utf8mb4 zachowuje emoji i inne 4-bajtowe znaki, które zrzut utf8mb3 traci, zanim zobaczy go konwerter.
- --hex-blob zapisuje kolumny binarne i wartości VECTOR szesnastkowo, co przetrwa kopiowanie między systemami.
- --routines --triggers --events dodają te obiekty do zrzutu, aby raport mógł je wymienić.

## Co nie jest konwertowane

Widoki, wyzwalacze, procedury składowane, funkcje i zdarzenia są pisane we własnym języku MariaDB. Raport wymienia je z nazwy i nigdy nie pomija ich po cichu, więc możesz je przepisać dla SQLite.

## Pytania o konwersję MariaDB do SQLite

### Czy mój zrzut jest wysyłany?

Nie. Konwerter działa w przeglądarce i odczytuje zrzut z dysku po kawałku, więc nigdy nie opuszcza on twojego komputera. Aplikacja na komputer i wiersz poleceń też konwertują na twoim komputerze.

### Jak duży może być zrzut?

Konwerter nigdy nie trzyma całego zrzutu w pamięci: czyta plik dwa razy, fragmentami, i zapisuje skrypt na bieżąco. Zrzuty wielogigabajtowe konwertują się w przeglądarce, w aplikacji na komputer i w wierszu poleceń.

### Z jakich wersji MariaDB może pochodzić zrzut?

Zrzuty z mariadb-dump i mysqldump z MariaDB od 10.3 do 12, z jednym INSERT na tabelę lub jednym na wiersz. Każdy testowy zrzut pochodzi z MariaDB 10.11, 11.4 i 11.8 i jest porównywany ze źródłem komórka po komórce.

### Czy kolumny UUID, INET6, JSON i VECTOR są zachowywane?

Kolumny UUID i INET stają się text, JSON text, a VECTOR tablicą JSON jego liczb float. Daty zerowe stają się NULL, a raport je liczy.

### Czy wartości AUTO_INCREMENT i sekwencje są zachowywane?

Kolumna AUTO_INCREMENT, która stanowi cały klucz główny tabeli, staje się INTEGER PRIMARY KEY AUTOINCREMENT i idzie dalej po najwyższym id. SQLite nie ma sekwencji, więc trafiają one do raportu.

### A procedury składowane i wyzwalacze?

Raport wymienia je z nazwy, ale nie są konwertowane, bo każda baza danych zapisuje je we własnym języku.

### Na jakich wersjach SQLite ładuje się skrypt?

SQLite 3.31 i nowsze. Każdy testowy zrzut ładuje się na 3.31 i 3.54 i zatrzymuje przy pierwszym błędzie, jeśli coś pójdzie nie tak.

## Z MariaDB

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

## Do SQLite

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

## Przewodnik i każda para

- [SQLite do MariaDB](https://intosql.com/pl/sqlite-do-mariadb)
- [Przewodnik migracji MariaDB do SQLite](https://intosql.com/docs/migrations/mariadb-to-sqlite)
- [Typy danych z MariaDB do SQLite](https://intosql.com/docs/types/mariadb-to-sqlite)
- [Każda para baz danych](https://intosql.com/pl/migracja-bazy-danych)
