Antworten:
Auf GitHub gibt es ein Skript mysql2sqlite.sh
Wie in der Kopfzeile beschrieben, kann das Skript folgendermaßen verwendet werden:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
Alternativen
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
oderman mysqldump
Hier ist eine Liste der Konverter . ( Schnappschuss bei archive.today )
Eine alternative Methode, die auch unter Windows funktioniert, aber selten erwähnt wird, ist: Verwenden Sie eine ORM-Klasse, die bestimmte Datenbankunterschiede für Sie abstrahiert. zB erhalten Sie diese in PHP ( RedBean ), Python (Djangos ORM-Ebene, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) usw.
dh Sie könnten dies tun:
Sequel (Ruby ORM) verfügt über ein Befehlszeilentool für den Umgang mit Datenbanken. Sie müssen Ruby installiert haben. Dann:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
undgem install sqlite3
gem install pg
wenn Sie von oder zu einer Postgres-Datenbank konvertieren möchten, sollte die Fortsetzung Adapter für Hauptdatenbanken haben
mysql
durch, mysql2
wenn Sie verwendenmysql2
ruby-dev
Paket, um diese nativen Edelsteinpakete zu erstellen.
Nicht jedes DB-Schema kann konvertiert werden. MySQL ist komplexer und funktionsreicher als SQLite. Wenn Ihr Schema jedoch einfach genug ist, können Sie es in eine SQL-Datei kopieren und versuchen, es zu importieren / in eine SQLite-Datenbank zu laden.
Ich hatte vor ungefähr 2 Tagen das gleiche Problem, als ich eine MySQL-Datenbank mit mehr als 20 GB in SQLite konvertieren musste. Es war keine leichte Aufgabe und ich habe dieses Python-Paket geschrieben , das den Job macht.
Das Beste daran, dass es in Python geschrieben wird, ist, dass es plattformübergreifend ist (im Gegensatz zu einem Shell / Bash-Skript) und alle problemlos mit installiert werden können pip install
(auch unter Windows). Es verwendet Generatoren und Chunking der zu verarbeitenden Daten und ist daher sehr speichereffizient.
Ich habe mich auch bemüht, die meisten Datentypen von MySQL nach SQLite korrekt zu übersetzen .
Das Tool wurde ebenfalls gründlich getestet und funktioniert unter Python 2.7 und 3.5+ .
Es kann über die Befehlszeile aufgerufen werden, kann aber auch als Standard-Python-Klasse verwendet werden, die Sie in einige größere Python-Orchestrierungen aufnehmen können.
So verwenden Sie es:
Usage: mysql2sqlite [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
-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.
.sql
Dump-Datei zu arbeiten, oder ist eine Verbindung zu einer installierten MySQL-Datenbank erforderlich?
Sqlite hat offiziell eine Liste von Konvertierungswerkzeugen.
Einfachste Möglichkeit, MySql DB in Sqlite zu konvertieren:
1) Generieren Sie eine SQL-Dump-Datei für Ihre MySQL-Datenbank.
2) Laden Sie die Datei auf RebaseData Online - Konverter hier
3) Auf der Seite wird eine Download-Schaltfläche zum Herunterladen der Datenbank im SQLite-Format angezeigt
Ich habe die perfekte Lösung gefunden
Zuerst benötigen Sie dieses Skript (fügen Sie es in eine Datei mit dem Namen 'mysql-to-sqlite.sh' ein):
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
echo "Conversion completed without error. Output file: $1.db"
rm $1.sql
rm $1.err
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
Speichern Sie dann eine Kopie Ihrer Datenbank:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
Führen Sie jetzt die Konvertierung aus:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
Und wenn alles gut geht, sollten Sie jetzt eine dumpfile.db haben, die über sqlite3 verwendet werden kann.
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
Es gibt verschiedene Möglichkeiten, dies zu tun. Ich hatte auch dieses Problem und habe viel gesucht und dann eine einfache Möglichkeit bekommen, MySQL in SQLite zu konvertieren.
Folge diesen Schritten:
Zuerst müssen Sie den SQLite DB-Browser installieren (sehr klein und schnell, um Tabellen und Daten anzuzeigen).
Öffnen Sie Ihre MySQL-Datei in Notepad, oder es wäre großartig, wenn Sie in Notepad ++ öffnen
Erste zusätzliche Zeilen entfernen enthält Informationen oder Abfragen und speichern.
Öffnen Sie den SQLite DB-Browser, erstellen Sie eine Datenbank, dann Tabellen und dieselben Typen wie in der MySQL-Datenbank.
Wählen Sie in der Menüleiste des SQLite DB-Browsers Datei-> und dann die von Ihnen gespeicherte MySQL-Datei importieren.
Es kann leicht in SQLite After Warning Dialog konvertiert werden.
Wenn ein Fehler auftritt, entfernen Sie weitere zusätzliche Zeilen, wenn Ihre MySQL-Datei vorhanden ist.
Sie können MySQL to SQLite Converter Software auch probeweise installieren, aber die Informationen, die ich für die Konvertierung gebe, sind lebenslange.
Meine Lösung für dieses Problem mit einem Mac war:
Fortsetzung installieren
$ gem install sequel
Wenn noch erforderlich
% gem install mysql sqlite3
Verwenden Sie dann Folgendes basierend auf dem Sequel-Dokument bin_sequel.rdoc (siehe Datenbank kopieren).
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Ein Windows- Benutzer kann Ruby und Sequel für eine Windows-Lösung installieren.
Ich habe eine Reihe von Methoden für diesen Thread ausprobiert, aber nichts hat bei mir funktioniert. Hier ist eine neue Lösung, die ich auch als sehr einfach empfunden habe:
sqlite
zum Erstellen dieser Datenbank erforderlichen Abfragen gespeichert.Jetzt haben Sie Ihre SQLite-Datenbank.
Ich mag den von Jfly vorgeschlagenen SQLite2009 Pro Enterprise Manager. Jedoch:
Der MySQL-Datentyp INT wird nicht in den SQlite-Datentyp INTEGER konvertiert (funktioniert mit DBeaver).
Es werden keine Fremdschlüssel-Konstanten aus MySQL importiert (ich konnte kein Tool finden, das die Übertragung von Fremdschlüssel-Einschränkungen von MySQL nach SQlite unterstützt.)
Aus der Liste der Konverterwerkzeuge habe ich Kexi gefunden . Es ist ein UI-Tool zum Importieren von verschiedenen DB-Servern (einschließlich MySQL) in SQLite. Beim Importieren einer Datenbank (z. B. aus MySQL) wird diese im Kexi-Format gespeichert. Das Kexi-Format ist das 'native' SQLite-Format. Kopieren Sie einfach die Kexi-Datei und haben Sie Ihre Daten im SQLite-Format
Wenn Sie eine Datenbankdatei erhalten und nicht den richtigen Server (entweder SQLite oder MySQL) installiert haben, versuchen Sie dieses Tool: https://dbconvert.com/sqlite/mysql/ Die Testversion ermöglicht das Konvertieren der ersten 50 Datensätze jeder Tabelle Der Rest der Daten ist mit einem Wasserzeichen versehen. Dies ist ein Windows-Programm, das entweder auf einem laufenden Datenbankserver oder in einer SQL-Datei ausgegeben werden kann