Funktioniert als Charme! Hier ist ein bisschen Dokumentation: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlitegist.github.com/943776
Kachar
Das Skript ruft nur Argumente von der Befehlszeile ab und übergibt sie an mysqldump, sodass Sie Informationen zum Konfigurieren benutzerdefinierter Ports usw. mit man mysqloderman mysqldump
Devin Howard vom
2
Es ist erwähnenswert, dass dieses Skript von einem hier abgeleiteten Nachfolger abgelöst wurde: github.com/dumblob/mysql2sqlite
drzax
Noch besser ist es, mit Nicht-ASCII-Zeichen zu spielen: $. / Mysql2sqlite.sh - Standard-Zeichensatz = utf8 -hHost -uUser -pPass db | sqlite3 db.sqlite gist.github.com/esperlu/943776#gistcomment-984448
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:
Laden Sie Daten aus der Quelldatenbank mit der ORM-Klasse.
Speichern Sie Daten im Speicher oder serialisieren Sie sie auf der Festplatte.
Speichern Sie Daten mithilfe der ORM-Klasse in der Zieldatenbank.
Vergiss nicht gem install mysqlundgem install sqlite3
Nick
1
und gem install pgwenn Sie von oder zu einer Postgres-Datenbank konvertieren möchten, sollte die Fortsetzung Adapter für Hauptdatenbanken haben
Macario
2
ersetzen mysqldurch, mysql2wenn Sie verwendenmysql2
Carlosin
1
Hinweis: Sie benötigen das ruby-devPaket, um diese nativen Edelsteinpakete zu erstellen.
Panda
1
Musste "gem install sequel mysql2 sqlite3" und dann "sequel mysql2: // user: password @ host / database -C sqlite: //db.sqlite" PERFECT
unom
17
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.
Nachdem Sie Ihre MySQL-Datenbank in eine Datei geschrieben haben, können Sie sie mit diesem Skript in SQLite github.com/dumblob/mysql2sqlite konvertieren (wie in der Antwort von @David_LeBauer erwähnt).
Paul Rougieux
7
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.
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 SQLitedatabasefile, repacking it into a minimal amountofdisk space--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQLdatabase. 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.
Hey @techouse, das sieht toll aus! Gibt es eine Möglichkeit, mit einer .sqlDump-Datei zu arbeiten, oder ist eine Verbindung zu einer installierten MySQL-Datenbank erforderlich?
vortek
Hallo! Ähm, nein, dies erfordert eine funktionierende MySQL-Datenbank. Wenn Sie einen Speicherauszug ohne Server haben, ändern Sie die Datei am besten manuell, wenn Sie wissen, was Sie tun.
Klemen Tušar
@arkadianriver Ich schlage vor, Sie verwenden immer virtuelle Umgebungen mit Python 😎
Klemen Tušar
5
Sqlite hat offiziell eine Liste von Konvertierungswerkzeugen.
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.
Dies hat gut funktioniert, wenn Ihre Daten kein Zeichen wie Apostroph haben. Zum Beispiel wird "Dies ist Peters Buch" in sql dumm "Dies ist Peters Buch" sein. Dies führt dazu, dass der DB-Browser einen Fehler auslöst. Bei großen Datenmengen ist das Entfernen schwierig. Wenn Sie jedoch die Daten von phpAdmin als CSV in den DB-Browser importieren, ist dieser Import erfolgreich. Ich hoffe diese Hilfe
Seunope
1
Meine Lösung für dieses Problem mit einem Mac war:
Installieren Sie Ruby und die Fortsetzung ähnlich wie bei Macario. Ich folgte diesem Link, um Ruby, MySQL und SQLite3 Ruby on Rails für Mac OSX einzurichten
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).
Wie kann ich nur eine Tabelle aus der Datenbank kopieren, nicht die gesamte MySQL-Datenbank?
Atul Vaibhav
Für einen einzelnen Tisch in der Vergangenheit habe ich dies getan, aber es kann einen besseren Weg geben. Exportieren Sie die Tabelle als CSV, wobei die Spaltennamen in der ersten Zeile aktiviert sind. Importieren Sie dann mit DB Browser for SQLite die Tabelle mithilfe der Option "Tabelle aus CSV importieren" in meine vorhandene SQLite-Datenbank. Sie müssen dann wahrscheinlich die Felder in den gewünschten Typ ändern, da ich glaube, dass alle Felder auf TEXT gesetzt werden. In dem Projekt, an dem ich gearbeitet habe, obwohl wir einen Prozess entwickelt haben, haben wir einen API-Aufruf durchgeführt, um alle Daten in einer Tabelle zurückzugeben, und dann die Daten in die Apps-Datenbank eingefügt / ersetzt.
Grant Luck
Es scheint zu funktionieren. Trotzdem kann ich nicht finden, wo sich die Ausgabedatei befindet. Können Sie mir helfen?
Pontios
1
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:
Installieren Sie RazorSQL . Funktioniert für Mac, Windows und Linux.
Stellen Sie in RazorSQL eine Verbindung zu Ihrer Datenbank her, z. B. auf localhost. Die Konvertierung funktioniert nicht mit SQL-Dump-Dateien.
Klicken Sie mit der rechten Maustaste auf Ihre Datenbank -> Datenbankkonvertierung -> wählen Sie SQLite aus. Dadurch wird eine txt-Datei mit allen sqlitezum Erstellen dieser Datenbank erforderlichen Abfragen gespeichert.
Installieren Sie einen SQLite-Datenbankmanager wie DB Browser for SQLite . Es funktioniert auf jedem Betriebssystem.
Erstellen Sie eine leere Datenbank, wechseln Sie zur Registerkarte SQL ausführen und fügen Sie den Inhalt aus Schritt 3 ein.
RazorSQL scheint nur eine "gemeinsame" * .sql-Datei mit Tabellendefinitionen und Dateneinfügungs-Intos zu erstellen, aber nichts besonders SQLite-spezifisches. Es wurden keine Ansichten exportiert, was ein großes Minus ist. Der mit MySql gelieferte mysqldump-Client exportiert auch Ansichten, erzeugt aber auch viele bedingte Dinge usw., die SQLite nicht verdaut.
Dalilander
0
Wenn Sie Erfahrung haben, schreiben Sie einfache Skripte von Perl \ Python \ etc und konvertieren Sie MySQL in SQLite. Lesen Sie Daten aus MySQL und schreiben Sie sie auf SQLite.
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
Antworten:
Auf GitHub gibt es ein Skript mysql2sqlite.sh
Wie in der Kopfzeile beschrieben, kann das Skript folgendermaßen verwendet werden:
Alternativen
quelle
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776man 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:
quelle
Sequel (Ruby ORM) verfügt über ein Befehlszeilentool für den Umgang mit Datenbanken. Sie müssen Ruby installiert haben. Dann:
quelle
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 habenmysql
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.
quelle
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:
quelle
.sql
Dump-Datei zu arbeiten, oder ist eine Verbindung zu einer installierten MySQL-Datenbank erforderlich?Sqlite hat offiziell eine Liste von Konvertierungswerkzeugen.
http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools
quelle
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
quelle
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):
Speichern Sie dann eine Kopie Ihrer Datenbank:
Führen Sie jetzt die Konvertierung aus:
Und wenn alles gut geht, sollten Sie jetzt eine dumpfile.db haben, die über sqlite3 verwendet werden kann.
quelle
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.
quelle
Meine Lösung für dieses Problem mit einem Mac war:
Fortsetzung installieren
Wenn noch erforderlich
Verwenden Sie dann Folgendes basierend auf dem Sequel-Dokument bin_sequel.rdoc (siehe Datenbank kopieren).
Ein Windows- Benutzer kann Ruby und Sequel für eine Windows-Lösung installieren.
quelle
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.
quelle
Wenn Sie Erfahrung haben, schreiben Sie einfache Skripte von Perl \ Python \ etc und konvertieren Sie MySQL in SQLite. Lesen Sie Daten aus MySQL und schreiben Sie sie auf SQLite.
quelle
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.)
quelle
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
quelle
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
quelle