MySQL ist ein fester Bestandteil und neben PostgreqSQL eines der am verbreitesten Datenbanksysteme im Bereich Server Anwendungen. Für lokale Anwendungen wird dagegen auf SQLite3 gesetzt. Das relationale Datenbanksystem wird in der Regel bei kleineneren Anwendungen angewandt und begleitet uns sogar im täglichen Leben. Dadurch das SQLite3 eine Programmbibliothek mit integriertem Datenbanksystem ist, läuft SQLite3 auf jedem System. Sogar unsere Smartphones, Smart TVs und Webbrowser verwenden SQLite.

mysql-to-sqlite3

Wer von MySQL zu SQLite3 wechseln möchte, braucht die Datenbank nicht in mühevoller Handarbeit exportieren. Mit dem Konsolenprogramm mysql-to-sqlite3 kann jeder seine MySQL Datenbank zu einer SQLite3 Datenbank exportieren.

Das in python geschriebene Tool ist ein einfache anzuwendenes MySQL Konvertierungsprogramm. Mit nur einem Aufruf lässt sich damit jede MySQL Datenbank superschnell in einer SQLite3 Datenbank exportieren.

Die Installation

Installiert werden muss mysql-to-sqlite3 über das Paketverwaltungsprogramm für Python-Pakete pip auf dem Server, auf dem auch die MySQL Datenbank installiert ist. Übrigens: Die Paketverwaltung kann auf jedem System installiert werden, auf dem auch python installiert ist.

Wer pip noch nicht installiert hat, muss zuerst die python Paketverwaltung installieren:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

Das Konvertierungsprogramm mysql-to-sqlite3 wird über pip installiert:

pip install mysql-to-sqlite3

Nachdem die Installtion abgeschlossen ist, kann das Tool auch schon ausgeführt werden. Gebe dazu auf der Konsole mysqltosqlite3 --help ein. In der Ausgabe stehen alle verfügbaren Argumente:

nico@localhost:/home/nico/# mysqltosqlite3 --help
Usage: ` [OPTIONS]
p
  Transfer MySQL to SQLite using the provided CLI options.

Options:
  -f, --sqlite-file PATH      SQLite3 database file  [required]
  -d, --mysql-database TEXT   MySQL database name  [required]
  -u, --mysql-user TEXT       MySQL user  [required]
  -p, --mysql-password TEXT   MySQL password
  -t, --mysql-tables TEXT     Transfer only these specific tables (space
                              separated table names). Implies --without-
                              foreign-keys which inhibits the transfer of
                              foreign keys.

  -X, --without-foreign-keys  Do not transfer foreign keys.
  -h, --mysql-host TEXT       MySQL host. Defaults to localhost.
  -P, --mysql-port INTEGER    MySQL port. Defaults to 3306.
  -c, --chunk INTEGER         Chunk reading/writing SQL records
  -l, --log-file PATH         Log file
  -V, --vacuum                Use the VACUUM command to rebuild the SQLite
                              database file, repacking it into a minimal
                              amount of disk space

  --use-buffered-cursors      Use MySQLCursorBuffered for reading the MySQL
                              database. This can be useful in situations where
                              multiple queries, with small result sets, need
                              to be combined or computed with each other.

  --help                      Show this message and exit.

Zum Exportieren der MySQL Datenbank muss mysqltosqlite3 mit Angaben zur Datenbank aufgerufen werden:

  • -f Zieldatei
  • -d Datenbankname
  • -u Datenbank Benutzer
  • -p Datenbank Passwort

Der Befehl zum Exportieren sieht in etwa so aus:

mysqltosqlite3 -f exportdatei.db -d datenbank -u benutzer -p Ein.Passwort123

Nach erfolgreichem Export befindet sich Datei unser dem in Argument -f Angegebenen Ziel.

nico@localhost:/home/nico/# ll
-rw-r--r--  1 root root 99590144 Jun 27 10:05 datenbank.db

SQLite3 Dateien lokal bearbeiten

Zum Ansehen und Bearbeiten von SQLite3 Dateien verwende ich gerne DBeaver.io. Das kostenlose Datenbank Tool ist Open Source und unterstützt die meisten SQL Treiber.